• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed SFML - sf::String::toAnsiString() powoduje błąd

Cloud VPS
0 głosów
669 wizyt
pytanie zadane 13 marca 2022 w C i C++ przez Mezeon Obywatel (1,570 p.)
zamknięte 14 marca 2022 przez Mezeon

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.

komentarz zamknięcia: Naprawiłem błąd
komentarz 13 marca 2022 przez adrian17 Mentor (354,120 p.)
Możesz wrzucić więcej (cały) kod?

Jeśli edytujesz w Visual Studio, możesz to odpalić w debuggerze? Powinien wtedy ładniej pokazać lokalizację.
komentarz 13 marca 2022 przez Mezeon Obywatel (1,570 p.)
Okej, już
komentarz 13 marca 2022 przez Wiciorny Ekspert (281,450 p.)

co zawiera text.seed ? W sensie, czy zawiera to co oczekujesz- bo podejrzewam że obiekt ten ma nie co inne właściwości, np adres odwołujący sie nie tam gdzie trzeba, przez co toString nie zadziała lub zamienia adres czegoś innego i to powoduje dalsze etapy błędów 

komentarz 13 marca 2022 przez Mezeon Obywatel (1,570 p.)
To znaczy txt_seed? Do jego stringa dodawane jest tylko wejście z klawiatury, nic więcej - linie 177 i 183. Konfiguracja jest na początku - linie 125 do 127.
komentarz 13 marca 2022 przez Wiciorny Ekspert (281,450 p.)
'Wejście" no właśnie- ale mi chodzi o to co tam siedzi w momencie odwołania bo jeśli siedzi jakiś koślawy adres pamięci to stąd leci ten błąd bo nie możesz dowolnie funkcji wywołać na czyms takim, wrzuć logi z debugera. z oznaczeniem co siedzi w zmiennej w aktualnym odwolaniu
komentarz 13 marca 2022 przez Mezeon Obywatel (1,570 p.)

Podobne pytania

0 głosów
0 odpowiedzi 126 wizyt
0 głosów
0 odpowiedzi 688 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Pajdas Mądrala (5,930 p.)
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 2 października 2016 w C i C++ przez Rappa2 Obywatel (1,540 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...