我正在寻找一种在C ++ 03中将代表整数(例如“ 123”)的字符串转换为整数的方法。

我知道使用stringstreams的通常方法:

string token="1234";
stringstream sss(token);
int tokenInt;
sss>>tokenInt;
cout<<"Int token is: "<<tokenInt<<"\n";


但是,这样做的问题是它似乎不适用于1e1之类的值。它只是打印出1。工作演示here。不幸的是,由于我使用的是C ++ 0x,因此无法使用stoi。还有其他方法吗?

谢谢!

编辑:我基本上是在IPv4和IPv6地址上工作。如果函数ipValidator()是有效的IPv4或IPv6地址,则返回有效。我将输入1e1.4.5.6分为令牌1e1456。由于1e1不正确,因此我需要返回false。不幸的是,上述方法返回true,因为它只将1e1处理为1

最佳答案

你快到了。进行转换后,您需要检查流中是否还有任何数据。如果有,则您知道输入无效。因此,如果

the_stream.eof()


true,则您消耗了输入,并且得到了有效的结果。如果不是,则输入无效。

07-28 10:32