字符串到整数

时间:2009-11-30 05:34:46

标签: c++ string

我无法在C ++中执行此操作

string temp = "123";
int t = atoi(temp);

为什么????

6 个答案:

答案 0 :(得分:8)

这是因为atoi期待一个原始的const char*指针。由于没有从std::stringconst char*的隐式转换,因此会出现编译器错误。使用c_str()的{​​{1}}方法为std :: string对象获取c样式std::string。顺便说一句,在C ++中,您可以使用流来执行此转换,而不是使用这些C风格的API。

答案 1 :(得分:6)

atoi(temp.c_str())

答案 2 :(得分:3)

请参阅以下问题:

C atoi() string to int:指出atoi()已被弃用。

Why doesn't C++ reimplement C standard functions with C++ elements style?:提供其他方法来执行您在上面列出的内容。

答案 3 :(得分:1)

好吧,你把一个std :: string(大概)传递给atoi,它接受一个const char *。尝试:

atoi(temp.c_str());

之前提到的。相反,你可以使用boost的lexical_cast

std::string temp = "123";
try {
   int foo = boost::lexical_cast<int>(temp);
} catch (boost::bad_lexical_cast e) {
   //handle error here
}

您可以将try / catch包装到模板函数中,该函数在您尚未进行异常处理的情况下处理异常。

答案 4 :(得分:0)

std :: string与字符指针不同(如C中所示)。

答案 5 :(得分:-1)

int i = 12345;

std::string s;

std::stringstream sstream;

sstream << i;

sstream >> s;
相关问题