我的问题是,我想将字符串转换为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”则不返回。我可以搜索。在字符串中并添加它,如果不是,但是没有一种方法将字符串转换为长?
答案 0 :(得分:3)
这是因为operator precedence。 !
运算符的优先级高于>>
运算符,因此对于编译器,您所编写的内容是
if ((!istr) >> x)
您需要添加自己的括号:
if (!(istr >> x))