c++ - 无法在 C++ Visual Studio 中获取字符串的大小
问题描述
我编写了一个简单的程序来删除字符串中的一个字母,并在键入时使用退格键。它应该每次都获取字符串的长度并删除最后一个字符,但我无法让函数.length();
在我的程序中工作,我看到它被另一个人用于stackoverflow。
Event eventInput;
string stringLength;
String userInput;
Text userText;
while (window.pollEvent(eventInput))
{
if (eventInput.type == sf::Event::TextEntered)
{
if (Keyboard::isKeyPressed(Keyboard::Backspace))
{
stringLength = userInput.length();
userInput.erase(1, 1);
}
userInput += eventInput.text.unicode;
userText.setString(userInput);
}
}
它说sf::String
没有成员长度
解决方案
问题是您(和您的代码)混合了两种不同类型的字符串。String
并且string
不一样。看来您想要名为 .的 SFML 字符串类String
。获取 SFML 字符串长度的方法称为getSize
not length
。
如果您没有在代码中添加using namespace sf;
和,您将避免这种混淆。using namespace std;
代码中的另一个错误是退格的处理。您的代码在检测到退格时会删除一个字符,然后再将其添加回来。这是因为你的代码if
在它应该有一个语句的时候有一个if ... else
语句。像这样
if (Keyboard::isKeyPressed(Keyboard::Backspace))
{
stringLength = userInput.length();
userInput.erase(1, 1);
}
else
{
userInput += eventInput.text.unicode;
userText.setString(userInput);
}
您将学到的一件事是查看您的代码并了解它的真正含义。
推荐阅读
- botframework - 无法将文件发送/附加到团队中的 ms bot
- ajax - 为什么使用ajax的输出不显示在表格中,而是显示在json格式中?
- java - spring boot addResourceHandler 无法使用服务
- reactjs - Firebase 身份验证预期的“onClick”侦听器是一个函数,而不是一个“object”类型的值
- windows - 批处理文件跳过或忽略“脚本已停止工作”错误
- ios - 表格视图不更新
- android - 带有子 TextView 的水平滚动视图不滚动
- javascript - 如何将多个值添加到列表框javascript中的一个选项
- python - matplotlib:set_major_formatter() 和 fmt_xdata 有什么区别?
- firebase - How to choose between development and production firebase project based on build flavours?