Сравнение данных пришедших из клавиатуры

Написал неболшой класс для получения данных с клавиатуры

class input{
    private:
    std::string symbols;


    public:
    bool enterPressed{false};

    void getInput(sf::Event &event){
        if (event.type == sf::Event::TextEntered)
            {
                if (event.text.unicode < 128)
                {
                    enterPressed=false;
                    if(13 == static_cast<int>(event.text.unicode)){
                        enterPressed=true;
                    }
                    if (8 == static_cast<int>(event.text.unicode)){
                        if(8 == static_cast<int>(event.text.unicode)){
                            if(symbols.size()!=0)
                            symbols.erase(symbols.end()-1);
                            else
                            symbols="";
                        }
                    } else{
                        sf::String str;
                        str = event.text.unicode;
                        symbols+=str.toAnsiString();
                    }
                }
            }
    }

    //////////////////////////////

    std::string getChars(){
        return symbols;
    }

    /////////////////////////////

    void clear(){
        symbols="";
    }
};

Получив данные, я пытаюсь их сравнить.

std::string writedData = input.getChars()


if(writedData.compare("quit")==0){
    pushexit();
}

Но условие никогда не выполняется, я выводил строки с помощью std::cout, они одинаковые


Ответы (1 шт):

Автор решения: KoVadim

Вот после этого

if(13 == static_cast<int>(event.text.unicode)){
    enterPressed=true;
}

нет else, поэтому, следующий if отрабатывает и так как там точно не 8, то отрабатывает ветка else, которая и добавляет этот символ в строку.

При печате очень часто сложно увидеть перевод строки, особенно, если не знать о нем.

Если все равно строки будут "разными", печатайте их в хекс виде

for (int i = 0; i < writedData.length(); i++) {
   std::cout << std::hex << (int)writedData[i] << " ";
}

Возможно, в строке есть ещё что то интересное.

→ Ссылка