我写了一个简单的程序来删除带有退格的字符串中的字母,以便在输入时使用。它应该每次都得到字符串的长度并删除最后一个字符,但我无法在我的程序中使用函数.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
而不是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);
}
您将学习的一件事是查看您的代码并查看它的真实含义。