2016-03-23 10 views
0
int DataSource::insertData(char* fileName){ 
double vel, tireAngle, timeStamp; 
string inputLine; 
int i=0; 
ifstream inFile; 

inFile.open(fileName); 


if (!inFile.good()) 
{ 
    cout << "Could not open file " << fileName << endl; 
    return 0; 
} 

while(inFile.good()) 
{ 
    getline(inFile, inputLine); 

    if(inFile.fail()) 
    { 
     break; 
    } 

    istringstream lineStream(inputLine); 
    lineStream >> timeStamp >> vel >> tireAngle; 

    source.push_back(Input(vel, tireAngle, timeStamp)); 
    ++i; 
} 

inFile.close(); 

return i; 
}; 

Ich versuche, den Dateinamen zu übergeben, öffnen Sie die Datei und analysieren Sie durch jede Zeile. Die Input-Klasse enthält die drei doppelten Werte und die Quelle ist ein Vektor vom Typ Input. Ich habe Vektor, iostream, fstream, string, sstream, climits # enthalten, zusammen mit Std-Namespace.Datei in C++ mit Member-Funktionen lesen

Also meine erste Ausgabe wird die Datei nicht öffnen, ich weiß, dass der richtige Dateinamen in geben wird der Fehler Ich erhalte ist:.

„Datei kann nicht geöffnet input1.txt libC++ abi .dylib: Endung mit nicht abgefangener Ausnahme vom Typ std :: out_of_range: vector "

Für den Vektor habe ich den Fehler gegoogelt und ich denke ich greife auf einen schlechten Vektor zu, der entweder weil ich vielleicht nicht richtig initialisiert wurde Die Vektor-Eingabe-Quelle (Formatierung lässt mich nicht "größer als, kleiner als" setzen) oder ich benutze die falsche Syntax.

Dies ist mein erster Beitrag, also tut mir leid, wenn dies eine schlechte Frage/Formatierung ist, aber jede Hilfe wäre willkommen.

Antwort

0

Ich glaube nicht, dass Sie gut() verwenden sollten, um zu überprüfen, ob die Eingabe gültig ist. Versuchen

Ändern
if (!inFile.good()) 

zu

if (!inFile.is_open()) 

und

Ändern
while(inFile.good()) 
{ 
    getline(inFile, inputLine); 

zu

while(getline(inFile, inputLine))