如何将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会告诉您结果,以及参与转换的字符数。