首页 > 解决方案 > 无法在 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没有成员长度

标签: c++sfml

解决方案


问题是您(和您的代码)混合了两种不同类型的字符串。String并且string不一样。看来您想要名为 .的 SFML 字符串类String。获取 SFML 字符串长度的方法称为getSizenot 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);
}

您将学到的一件事是查看您的代码并了解它的真正含义。


推荐阅读