[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?