在c ++中将字符串转换为整数问题

时间:2010-10-10 09:59:35

标签: c++

我遇到了问题

 string ccc="example";
    int cc=atoi(csession);

它说cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’ 我应该将字符串转换为字符数组,然后应用于atoi或是否有任何其他方式

4 个答案:

答案 0 :(得分:3)

istringstream in(ccc);
int cc;
in >> cc;
if(in.fail())
{
   // error, ccc had invalid format, more precisely, ccc didn't begin with a number
   //throw, or exit, or whatever
}

istringstream位于标题<sstream>namespace std中。上面的代码将从字符串中提取第一个整数,如果ccc为“123ac”cc为123.如果ccc为“abc123”,那么cc将有未定义的值,in.fail()是真的。

答案 1 :(得分:2)

根据你的描述,也许你想要的是:

string ccc =“example”;  int cc = atoi(ccc.c_str());

答案 2 :(得分:1)

在字符串对象上使用.c_str()将其传递给atoi

答案 3 :(得分:1)

呵呵,好的一个亚美尼亚人。这是使用boost :: lexical_cast:

的解决方案
#include <boost/lexical_cast.hpp>
.
.
.
int c = boost::lexical_cast<int>(csession);

此处提供的文档:boost::lexical_cast