0

こんにちは、const 文字列を int の配列に変換しようとしていますが、試してみると許可されません。私のコードは次のとおりです。

int isRegistered(const char str[]) {

int isbnInt[10], i;
//char isbnArray[10];

//isbnArray = str;  ----> something I tried

for (i = 0; i < 10; i++)
{
    isbnInt[i] = atoi(str[i]);
    cout << isbnInt[i] << endl;
}
}

しかし、コンパイルしようとすると、「char から const char* への変換が無効です」というエラーが表示されます。

4

3 に答える 3

3

atoi呼び出しは引数を期待const char *しますが、を渡すとchar、これが問題になります。

以下を実行するだけで、文字を数字に変換できます。これにより、文字自体からのASCII値が差し引か0れます(ASCIIコードでは0〜9が順次増加するため)。

isbnInt[i] = str[i] - '0';
于 2013-02-07T03:30:40.060 に答える
0

試す:

for (i = 0; i < 10; i++)
{
    isbnInt[i] = str[i] - '0';
    cout << isbnInt[i] << endl;
}

atoiconst char*、単一の文字ではなく入力として受け取ります。

于 2013-02-07T03:31:16.540 に答える
0

あなたのコードは次のように書くこともできます:

for (i = 0; i < 10; i++)
{
    char foo = str[i];
    isbnInt[i] = atoi(foo);
    cout << isbnInt[i] << endl;
}

(あなたが見つけたように)それはうまくいきません。atoi は、char ではなく char* を想定しています。

試す:

 int isbm = atoi(str);

そして、それがあなたが望んでいたかどうかを確認してください。

于 2013-02-07T03:33:47.480 に答える