我不能用C ++做到这一点
string temp = "123";
int t = atoi(temp);
为什么????
最后发布: 2009-11-30 05:34:46
我不能用C ++做到这一点
string temp = "123";
int t = atoi(temp);
为什么????
那是因为atoi
期待一个原始的const char*
指针。 由于没有从std::string
到const char*
隐式转换,因此会出现编译器错误。 使用std::string
c_str()
方法获取std :: string对象的c样式const char*
。 顺便说一句,在C ++中,您可以使用流来执行此转换,而不是使用这些C风格的API。
atoi(temp.c_str())
好吧,你把一个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;