[c++] segmentation fault bei istringstream casten nach int



  • Hallo,

    ich möchte mit folgendem code Werte aus einer Textdatei auslesen, variablen zuweisen und dann nach typ int casten. Ich bekomme aber einen Segementation fault.

    #include <iostream>
    
    #include <fstream>
    
    #include <sstream>
    
    #include <string>
    
    int main() {
    std::string input = "Name: ran\nOrt: greb\nNummer: 5\nAnzahl: 22\n";
    
    std::string dummy, var, val[3], f;
    
    int value[3];
    
    //std::istringstream in(input);
    
    std::ifstream in("Variableninput.dat");     // neuen Lese-Stream erzeugen
    for(int i = 0; i < 4; ++i) {
    
        std::getline(in, var, ':'); // Einlesen bis :
    
        in.ignore(); // Leerzeichen ignorieren
    
        std::getline(in, val[i]); // Einlesen bis Zeilenende
        std::istringstream invar( val[i] );
    
        invar >> value[i];	
    
        std::cout << var << " = " << val[i] << "\n";
    
      }
    
    }
    

    Grüße

    Guddy



  • Die Arrays sind um 1 zu klein.



  • Hey, danke nun gehts!!!

    ich dachte ein array zählt von 0-x??? Was ist hier das Problem???

    Grüße

    Guddy



  • ja, tuts auch, von 0 bis 2 wenn du ein array[3] anlegst, deine schleife läuft aber von 0 bis kleiner 4, und kleiner 4 ist auch 3 und schwupps sind wir über der arraygrenze.



  • guddy schrieb:

    ich dachte ein array zählt von 0-x??? Was ist hier das Problem???

    Natürlich, wobei x == size - 1.

    Einfach mal auf die Finger gucken und durchzählen:

    int i[5] entspricht 5 Elementen:
    0 - erstes
    1 - zweites
    2 - drittes
    3 - viertes
    4 - fünftes
    5 - ...ups?


Anmelden zum Antworten