0

所以,我尝试使用 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". 任何想法,我的代码有什么问题?谢谢

4

1 回答 1

3

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

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

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

    i++;
}
于 2013-02-03T22:29:58.460 回答