c++ - 在字符串到 int 转换中使用 atoi 时出错

标签 c++

<分区>

因此,我尝试使用 atoi 函数将字符串转换为 int,但是我得到一个错误,指出参数类型 char 与类型 const char* 的参数不兼容。这是代码:

void evaluate(const char values[], string& codeMessage, string& result)
{
    unsigned int i = 0;
    while (i<codeMessage.length())
    {
        result+= values[atoi(codeMessage[i])];
        i++;
    }
}

因此,如果函数 evaluate({a,b,c,d}, "2331", result) 被调用,结果必须包含 "cdda"。知道吗,我的代码有什么问题?谢谢

最佳答案

atoi 需要一个 C 字符串,而不是单个字符。

如果你想从词汇上将一个数字转换为等价的整数,为什么不简单地断言它在 '0''9' 之间,然后减去 “0”?无论语言环境的字符集如何,数字都必须是连续的。

while (i < codeMessage.length()) {
    if (codeMessage[i] >= '0' && codeMessage[i] <= '9') {
       result += values[codeMessage[i] - '0'];
    }

    i++;
}

关于c++ - 在字符串到 int 转换中使用 atoi 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678067/

相关文章:

c++ - 如何调试我的 C++ BMI 计算器程序?

c++ - 右值 Hello World 缺少构造函数

java - 为什么我们使用 if,else if 而不是多个 if block 如果主体是返回语句

java - 对于初学者来说,如何在 Emacs 中首次启用自动完成功能?

C++ 构造函数/析构函数调用 & 在动态创建的数据上调用 "new"是否会删除旧数据?

c++ - Qt 按钮处理建议

c++ - 如何构建用于交叉编译的 Qt 5.7.0?

c++ - 在 C++ 中排列文本输出

c++ - 赋值运算符,使用动态数组

c++ - 等同于 C++ 中不同类的 2 个对象