• 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

VPS Starter Arubacloud
0 głosów
395 wizyt
pytanie zadane 13 marca 2022 w C i C++ przez Mezeon Obywatel (1,550 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 Ekspert (344,100 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,550 p.)
Okej, już
komentarz 13 marca 2022 przez Wiciorny Ekspert (269,120 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,550 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 (269,120 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,550 p.)

Podobne pytania

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

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...