C++ vector::_M_range_check Fehler?
Hier ist meine Funktion:
void loadfromfile(string fn, vector<string>& file){
int x = 0;
ifstream text(fn.c_str());
while(text.good()){
getline(text, file.at(x));
x++;
}
//cout << fn << endl;
}
Den Wert der fn, dass ich mich übergeben, ist der name einer text-Datei ('10a.txt')
Der Wert der Datei, die ich bin übergeben die wie folgt deklariert wird:
vector<string> file1;
Der Grund, warum ich nicht definieren eine Größe, weil ich nicht denke, dass ich mit Vektoren, Sie sind dynamisch... sind Sie das nicht?
Diese Funktion soll eine bestimmte text-Datei, und speichern Sie den gesamten Inhalt jeder Zeile in einen einzelnen Vektor-Zelle.
Ex. Speichern Sie den Inhalt der ersten Zeile in die Datei.(0)
Speichern Sie den Inhalt der zweiten Zeile in die Datei.(1)
Und so weiter, bis es keine Zeilen mehr in der Textdatei.
Den Fehler:
kündigen, genannt nach dem werfen einer Instanz von 'std::out_of_range'
what(): vector::_M_range_check
Dachte ich, die Prüfung in der while-Schleife sollte verhindern, dass dieser Fehler!
Dank im Voraus für Eure Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vektor
file
leer ist,file.at(x)
wird throw out of range exception. Sie müssen std::vector::push_back hier:Oder Sie könnten einfach konstruieren Vektor von string aus der Datei:
file.at(x)
greift auf das element an der x-TEN position, diese muss aber vorhanden ist, ist es nicht automatisch erstellt wenn er nicht vorhanden ist. Zum hinzufügen von Elementen zu Ihren Vektor, die Sie verwenden müssenpush_back
oderinsert
. Zum Beispiel: