Я пытаюсь реализовать способ чтения входных данных из текстовых файлов, чтобы упростить загрузку различных наборов координат, но я наткнулся на ошибку, которую не понимаю, когда мой объект stringstream
перестанет получать строкиоднажды одна строка плохо отформатирована.
В моем выводе вы можете видеть, что строка все еще не повреждена, когда распечатывается, а затем помещается в stringstream
на следующей строке, но после одной плохо отформатированной строки, stringstream
перестает содержать что-либо, когда я распечатываю это.
Что здесь происходит?
Вывод:
Вот как выглядит текстовый файл:
Код метода:
ifstream pathfile(p.string());
cout << "Path file opened successfully.\n\n";
string line;
stringstream ss;
int x, y;
char comma,direction;
//Iterate all lines in the file
while(getline(pathfile,line)){
//remove all spaces from line
line.erase(remove(line.begin(), line.end(), ' '), line.end());
//skip comments and blank lines
if(line.c_str()[0] == '#' || line.empty()) continue;
//parse remaining lines
ss.str(string()); //clear stringstream
cout <<"LINE: "<<line<<endl;
ss << line;
cout <<"SS: "<<ss.str()<<endl;
if(ss >> x >> comma >> y >> comma >> direction)
cout << "X: "<<x<<" Y: "<<y<<" D: "<<direction;
else{
cout << "Ill-formatted line: ";
}
printf(" | %s\n\n", line.c_str());
}
pathfile.close();