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

Odczyt danych ze stringa (string subscript out of range)

0 głosów
219 wizyt
pytanie zadane 6 kwietnia 2021 w C i C++ przez 0Brzoza0 Nowicjusz (120 p.)
otagowane ponownie 6 kwietnia 2021 przez 0Brzoza0
Witam
Piszę tutaj bo już skończyły mi się pomysły jak rozwiązać mój problem. Chodzi dokładnie o pętlę od linijki 60 do 108. Nie rozumiem dlaczego wyskakuje błąd jak w opisie (string subscript out of range) przy próbie odczytywania po kolei znaków zawartych w stringu. Visual Studio nie pokazuje mi żadnych błędów.
Zamieszczam link do pastebin-a:

https://pastebin.com/NdVH5duS

Dane wprowadzane do pliku np:
2
Adam
7000
Ewa
15000
-+

PS: Dane w pliku mają wyglądać jak powyżej czyli enter między nimi, i jakby ktoś dał radę wytłumaczyć mi czemu linijka 49 działa to byłbym wdzięczny.
Aha i jeśli by się ktoś zastanawiał dlaczego to wszystko jest tak pokręcone to dlatego że próbuję zrealizować zadanie z podręcznika wg polecenia. I ogólnie zatrzymałem się na przypisaniu do struktury danych z pliku.
komentarz 7 kwietnia 2021 przez j23 Mędrzec (195,220 p.)

A dlaczego nie tak:

int n;
wplacajacy w;
std::vector<wplacajacy> osoby;

if(std::cin >> n) {
    while (n-- && std::getline(std::cin >> std::ws, w.nazwisko) >> w.kwota) {
        osoby.push_back(w);
    }
}

???

P.S. inFile jest IMO zbędny.

1 odpowiedź

0 głosów
odpowiedź 7 kwietnia 2021 przez TOM_CPP Pasjonat (22,640 p.)

Przydałaby się tutaj serializacja.

#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>

using namespace std;

struct Person
{
    string name {};
    int price {};

    friend istream& operator>>( istream &is , Person& person )
    {
        return is >> person.name >> person.price;
    }

    friend ostream& operator<<( ostream &out , const Person& person )
    {
        out << person.name << endl <<  person.price << endl;
        return out;
    }
};

int main()
{
    ofstream{"example.txt"} << Person{"John",200} << Person{"Bill",500};

    ifstream read {"example.txt"};
    vector<Person> persons { istream_iterator<Person>{read} , {} };

    for( const auto& person : persons ) cout << person;
}

 

Podobne pytania

+1 głos
1 odpowiedź 463 wizyt
0 głosów
1 odpowiedź 1,146 wizyt
pytanie zadane 6 czerwca 2019 w Python przez Ventre90 Obywatel (1,170 p.)
0 głosów
1 odpowiedź 1,437 wizyt
pytanie zadane 6 listopada 2018 w C i C++ przez applepie Początkujący (250 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,138 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2630p. - DziarnowskiJ
  3. 2550p. - raydeal
  4. 2478p. - rucin93
  5. 2361p. - Łukasz Piwowar
  6. 2348p. - Łukasz Eckert
  7. 2340p. - CC PL
  8. 2300p. - Adrian Wieprzkowicz
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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
...