0

我的问题是,我想将一个字符串转换为一个长整数。为此,我以这种方式使用 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”,则不会。我可以搜索 . 在字符串中,如果没有则添加它,但是没有将字符串转换为 long 的方法吗?

4

1 回答 1

3

这是因为运算符优先级。运算符的!优先级高于>>运算符,因此对于编译器,您编写的是

if ((!istr) >> x)

您需要添加自己的括号:

if (!(istr >> x))
于 2014-01-18T18:57:00.667 回答