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'減算'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 に答える