Hej, piszę projekt z użyciem C++ i SFML i napotkałem na błąd, którego nie mogę naprawić. Program pobiera od użytkownika ciąg cyfr z dopuszczalnym minusem na początku za pomocą klasy sf::Text i eventów klawiatury:
if (event.type == sf::Event::TextEntered) {
if (event.text.unicode == 8) {
if (txt_seed.getString().getSize() > 0) {
txt_seed.setString(txt_seed.getString().substring(0, txt_seed.getString().getSize() - 1));
spm_cursor.move(-28, 0);
}
}
else if (
((event.text.unicode == 45 && txt_seed.getString().getSize() == 0) || event.text.unicode - 48 < 10) && (txt_seed.getString().getSize() < 10 || (txt_seed.getString().getSize() < 11 && txt_seed.getString().find("-") == 0))) {
txt_seed.setString(txt_seed.getString() + static_cast<sf::String>(event.text.unicode));
spm_cursor.move(28, 0);
}
}
// txt_seed - obiekt klasy sf::Text, do którego wczytywane jest wejście z klawiatury
// spm_cursor - sprite będący migającym kursorem jak przy wprowadzaniu tekstu w polu tekstowym
Jako że ciąg ten jest ziarnem generatora, to potrzebuję go jako liczbę. Próbując zamienić string w txt_seed na typ std::string w ten sposób:
txt_seed.getString().toAnsiString();
Otrzymuję poniższy błąd:
I dalej nie mogę przekazać stringa do funkcji stoi(), aby zamienić go na liczbę. Będę wdzięczny za pomoc.
Cały kod: https://codeshare.io/JbyeOd
Debug z Visual Studio
Pokazuje błąd przy funkcji generowania labiryntu, ale w rzeczywistości jest to właśnie .toAnsiString(), choć VS tego nie pokazuje:
Gdy wyrzucę tę metodę, błąd znika.