无法在C ++ visual studio中获得字符串的大小

问题描述 投票:-2回答:1

我写了一个简单的程序来删除带有退格的字符串中的字母,以便在输入时使用。它应该每次都得到字符串的长度并删除最后一个字符,但我无法在我的程序中使用函数.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
1个回答
3
投票

问题是你(和你的代码)混合了两种不同类型的字符串。 Stringstring不一样。看来你想要的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);
}

您将学习的一件事是查看您的代码并查看它的真实含义。

© www.soinside.com 2019 - 2024. All rights reserved.