首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >atoi()转换错误

atoi()转换错误
EN

Stack Overflow用户
提问于 2008-10-11 05:47:24
回答 4查看 6.3K关注 0票数 4

atoi()给我这个错误:

代码语言:javascript
复制
error C2664: 'atoi' : cannot convert parameter 1 from 'char' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

从这一行开始: int pid = atoi( token.at(0) );其中token是一个向量

我怎么才能绕过这个问题呢?

EN

回答 4

Stack Overflow用户

发布于 2008-10-11 05:50:13

您必须创建一个字符串:

代码语言:javascript
复制
int pid = atoi(std::string(1, token.at(0)).c_str());

..。假设该标记是char的std::vector,并使用std::string的构造函数,该构造函数接受单个字符(以及字符串将包含的字符的编号,在本例中为1)。

票数 4
EN

Stack Overflow用户

发布于 2008-10-11 15:43:17

您的示例是不完整的,因为您没有说出向量的确切类型。我假设它是std::vector (可能是用C字符串中的每个字符填充的)。

我的解决方案是在char *上再次转换它,这将给出以下代码:

代码语言:javascript
复制
void doSomething(const std::vector & token)
{
    char c[2] = {token.at(0), 0} ;
    int pid   = std::atoi(c) ;
}

请注意,这是一个类似C的解决方案(即,在C++代码中相当难看),但它仍然很有效。

票数 2
EN

Stack Overflow用户

发布于 2012-02-20 22:41:47

代码语言:javascript
复制
const char tempChar = token.at(0);
int tempVal = atoi(&tempChar);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/193715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档