我不明白爲什麼第二個>>失敗。我做錯了什麼或缺少一些代碼?std :: stringstream operator >>無法將字符串轉換爲浮點數
std::ifstream file;
std::stringstream ss;
std::string str;
float f1, f2;
file.open("file.txt");
getline(file, str);
ss.str(str);
ss >> f1;
getline(file, str);//when packed inside if(), evalueates to true
ss.str(str);
ss >> f2; //when packed inside if(), evalueates to false - but why it fails?
std::cout<<"str = "<<str<<"\n";
std::cout<<"ss.str() = "<<ss.str()<<"\n";
std::cout<<"f1 = "<<f1<<"\nf2 = "<<f2<<"\n";
文件:
0.120000
0.120000
輸出:
str = 0.120000
ss.str() = 0.120000
f1 = 0.12
f2 = 2.06831e+032
我已經嘗試了多個文件,此代碼,顯然只有第一次插入浮動作品,文件在結尾處的空行
編輯
丹指出,我試圖直接從文件中提取浮動:
file.open("file.txt");
file >> f1;
file >> f2;
理想的工作;也simplyfies代碼很多
溝'的'流操作stringstream',只需使用>>單曲在'ifstream'本身。 – Dan
你是什麼意思? – Xeverous
'file >> f1'。該文件可以像stringstream一樣執行這些操作。 – Dan