字符串到整数

最后发布: 2009-11-30 05:34:46


问题

我不能用C ++做到这一点

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

为什么????

c++ string
回答

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


回答

atoi(temp.c_str())


回答

看到这些问题:

C atoi()string to int :指出不推荐使用atoi()。

为什么C ++没有用C ++元素样式重新实现C标准函数? :提供替代方法来执行上面列出的操作。


回答

好吧,你把一个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包装到模板函数中,该函数在您尚未进行异常处理的情况下处理异常。


回答

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


回答

int i = 12345;

std::string s;

std::stringstream sstream;

sstream << i;

sstream >> s;