[英]Stringstream string to integer conversion in C++
我剛剛閱讀了C ++中的stringstream並實現了一個簡單的程序。
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
int num;
stringstream sso;
string str;
//integer to string
cin >> num;
sso << num;
sso >> str;
cout << "String form of number : " << str << endl;
//string to integer
cin >> str;
sso << str;
sso >> num; //num still has value from previous integer to string????
cout << "Integer form of string (+2) :" << (num + 2) << endl;
return 0;
}
這是輸出:
12
String form of number : 12
44
Integer form of string (+2) :14
我收到錯誤的輸出,因為num
沒有得到更新,仍然保留以前計算的舊值。 我在做什么是愚蠢的錯誤?
在第一次輸入操作之后,stringstream獲得其EOF位設置。 這個位是粘滯的,即它不會通過添加更多輸入來解析。 作為一般規則,當您讀取數據時,還應驗證讀取是否成功。 對於流,您可以使用以下方法檢查流狀態:
if(!(istream >> value)) throw runtime_error("reading failed");
我很確定你的第二個輸入操作只是失敗了,此時該值保留了它以前的值。
您應該在使用之間清除字符串流,因為eofbit已在首次使用期間設置:
sso.clear();
sso.str("");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.