C ++:istringstream转换为long int不起作用

时间:2014-01-18 18:52:20

标签: c++ string istringstream

我的问题是,我想将字符串转换为long int。为此,我使用istringstream:

long x;
string lString;
istringstream istr;
getLine(cin, lString);
istr.str(lString);
if(!(istr>>x)) return false; //Edited after answer below

(转换和cin实际上有两种不同的方法,我只是把相关的代码放在一起)。

如果输入“1”,则以下代码返回false,但如果输入“1.0”则不返回。我可以搜索。在字符串中并添加它,如果不是,但是没有一种方法将字符串转换为长?

1 个答案:

答案 0 :(得分:3)

这是因为operator precedence!运算符的优先级高于>>运算符,因此对于编译器,您所编写的内容是

if ((!istr) >> x)

您需要添加自己的括号:

if (!(istr >> x))