bad alloc
-
hi,
bei einer der beiden Funktionen wird ein bad alloc geworfen, komm aber nicht drauf wieso
:
question Quiz::ParseLine(string line) { basic_string <char>::size_type index; index=line.find("|"); question q_temp; string tempstring; tempstring=(line.substr(0, index)); q_temp.quest=tempstring; tempstring=line.substr(index+1, (line.length()-(q_temp.quest.length()+1))); q_temp.answer=tempstring; return q_temp; }; bool Quiz::ParseAll() { ifstream FileHandle("questions.qaa"); vector<string> v_temp; if(FileHandle){ string s_temp; while(getline(FileHandle , s_temp)){ v_temp.push_back(s_temp); } } for(unsigned int i(0); i<=v_temp.size(); ++i){ question q_temp=ParseLine(v_temp[i]); q_Vec.push_back(q_temp); } return true; };zur Vollständigkeit noch:
struct question{ std::string quest; std::string answer; };beginner_
-
Kann man dir ohne weitere Infos nicht sagen. Benutz nen Debugger. Wies mit VC++ geht, siehst du im Magazin: http://www.c-plusplus.net/forum/viewtopic-var-t-is-120832.html
-
Array bounds error.
Besser sofor(unsigned int i(0); i<v_temp.size(); ++i){Kurt
-
so funktionierts, danke
aber jetzt tritt ein neues Problem auf:
der Vector is immer ein Element zu lang, und das letzte is leer
auch da komm ich nicht drauf...
der relevante Code steht bereits oben
beginner
-
Zwei möglichkeiten.
while(getline(FileHandle , s_temp)){ if ( s_temp.length() ) v_temp.push_back(s_temp); }oder du machst kein \n nach der letzten zeile im file
Kurt
-
das funktioniert auch nicht, hab trotzdem noch ein leeres Element am Schluss
beginner_
-
Bei mir geht's so einwandfrei.
#include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; struct question{ std::string quest; std::string answer; }; vector<question> q_Vec; question ParseLine(string line) { basic_string <char>::size_type index; index=line.find("|"); question q_temp; string tempstring; tempstring=(line.substr(0, index)); q_temp.quest=tempstring; tempstring=line.substr(index+1, (line.length()-(q_temp.quest.length()+1))); q_temp.answer=tempstring; return q_temp; } bool ParseAll() { ifstream FileHandle("questions.qaa"); vector<string> v_temp; if(FileHandle){ string s_temp; while(getline(FileHandle , s_temp)){ if ( s_temp.length() ) v_temp.push_back(s_temp); } } for(unsigned int i(0); i<v_temp.size(); ++i){ question q_temp=ParseLine(v_temp[i]); q_Vec.push_back(q_temp); } return true; } int main() { ParseAll(); cout << endl; for ( int i = 0; i < q_Vec.size(); ++i ) { cout << "q:" << q_Vec[i].quest << " a:" << q_Vec[i].answer << endl; } }Kurt