У меня есть маленький кусочек кода:
fileopen.open(file_name);
while (getline(fileopen, line, ',')){
string temp;
vector<string> mug;
temp = line;
stringstream ss(temp);
while (getline(ss, temp, ' ')){
mug.push_back(temp);
}
stringstream conv;
double vol, cos;
conv << mug.at(1);
conv >> vol;
stringstream().swap(conv);
conv << mug.at(3);
conv >> cos;
mugs.push_back(make_tuple(mug.at(0), vol, mug.at(2), cos));
stringstream().swap(conv);
stringstream().swap(ss);
temp.clear();
}
sort(mugs.begin(), mugs.end(), sort_by);
for (int i = 0; i < mugs.size(); i++){
cout << "Country: " << get<0>(mugs[i]) << " ";
cout << ", Volume: " << get<1>(mugs[i]) << " ";
cout << ", Material: " << get<2>(mugs[i]) << " ";
cout << ", Price: " << get<3>(mugs[i]) << "\n";
}
У меня есть несколько очисток и stringstream().swap()
, потому что это хорошо известная проблема.<sstream>
, кажется, прерывает итерации для циклов while
.Однако даже это, похоже, не работает.Ввод данных из файла выглядит следующим образом:
RUS 0.1 Wood 20
USA 0.4 Glass 0.5
Текущий код печатает первую строку по мере необходимости, но не может перебрать и напечатать вторую строку.Любые предложения?
Я пытался использовать continue
и goto
для решения этой проблемы.Ни одно из этих решений не сработало.