我遇到了问题
string ccc="example";
int cc=atoi(csession);
它说cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’
我应该将字符串转换为字符数组,然后应用于atoi
或是否有任何其他方式
答案 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)
#include <boost/lexical_cast.hpp>
.
.
.
int c = boost::lexical_cast<int>(csession);
此处提供的文档:boost::lexical_cast。