2012-06-08 25 views
0
#include <iostream> 
#include <sstream> 

using namespace std; 

int get_4() 
{ 
    char c = '4'; 
    stringstream s(ios::in); 
    s << c; 
    int i; 
    s >> i; 
    return i; 
} 

int main() 
{ 
    cout << get_4() << endl; 
} 

转换不适用于我。如果我将字符'4'或字符数组{'4','\ 0'}写入到字符串流中,然后将其读出到int i中,则不会返回4.上述代码有什么问题?stringstream:为什么这个代码不返回4?

+2

为什么你使用'in'标志来输入'in | out'流? –

+0

写入输入流不是一个坏主意吗?也许你可以尝试'stringstream s;'而不是'stringstream s(ios :: in);'。 – tonytony

回答

9

因为您将stringstream设置为仅输入 - 无输出。

如果试图提取int后检查fail()位,你会看到它没有工作:

s >> i; 
    bool b = s.fail(); 
    if(b) 
     cerr << "WHOA DOGGIE! WE BLOWED UP\n"; 

在你的代码,更改:

stringstream s(ios::in); 

发送至:

stringstream s; 
相关问题