如何将C ++string转换为int?
可能重复:
如何parsing一个string在C + +中的int?
如何将C ++string转换为int?
假定您期望string中包含实际的数字(例如,“1”,“345”,“38944”)。
另外,让我们假设你没有提升,而且你真的想用C ++的方式来做,而不是C老式的方式。
#include <sstream> // st is input string int result; stringstream(st) >> result;
使用C ++stream。
std::string plop("123"); std::stringstream str(plop); int x; str >> x; /* Lets not forget to error checking */ if (!str) { // The conversion failed. // Need to do something here. // Maybe throw an exception }
PS。 这个基本原则是boost库lexical_cast<>
如何工作。
我最喜欢的方法是提升lexical_cast<>
#include <boost/lexical_cast.hpp> int x = boost::lexical_cast<int>("123");
它提供了一种在string和数字格式之间进行转换的方法。 在它下面使用一个stringstream,所以任何可以编组成一个stream,然后从一个streamun-marshaled(看看>>和<<运营商)。
在之前的C ++代码中,我使用了类似下面的代码:
#include <sstream> int main() { char* str = "1234"; std::stringstream s_str( str ); int i; s_str >> i; }
C ++ FAQ Lite
[39.2]如何将std :: string转换为数字?
https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num
让我添加我的投票boost :: lexical_cast
#include <boost/lexical_cast.hpp> int val = boost::lexical_cast<int>(strval) ;
它会抛出bad_lexical_cast
错误。
使用atoi
也许我误解了这个问题,为什么你不想用atoi呢? 我看不出重新发明轮子的意义。
我只是在这里错过了点?
在“stdapi.h”
StrToInt
此function会告诉您结果,以及参与转换的字符数。