我正在寻找一种在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
分为令牌1e1
,4
,5
和6
。由于1e1
不正确,因此我需要返回false。不幸的是,上述方法返回true
,因为它只将1e1
处理为1
。 最佳答案
你快到了。进行转换后,您需要检查流中是否还有任何数据。如果有,则您知道输入无效。因此,如果
the_stream.eof()
是
true
,则您消耗了输入,并且得到了有效的结果。如果不是,则输入无效。