-1

値が 1 の unsigned char を取得しました。これを「1」のような文字列に入れる必要があります。しかし、これを文字列ストリームに直接入れようとすると、char(1) の値が取得され、「1」である必要があります。これを関数atoiに入れることができれば、「1」の値が返されることを私は知っています。しかし、charにキャストしてatoi関数に入れようとしましたが、例外がスローされます。すでに文字列に入れようとしましたが、c_str() を atoi 関数にキャストしましたが、まだ成功していません。誰かが私を助けることができれば、私は感謝します。

4

3 に答える 3

3

に挿入charする前に、をキャストするだけです。intstd::stringstream

ss << static_cast<int>(c);

charこれにより、の値は文字ではなく数値として扱われます。

于 2013-03-04T12:14:38.483 に答える
1

ここで2つの機能を混同していると思います。

整数を文字列に変換したい。

atoi(ASCIIから整数へ)ただし、文字列を取り、それを整数に解析して"123"123.

itoaここで、このプロトタイプを持つ関数を探しています。

char *  itoa ( int value, char * str, int base );

あなたの場合、これは次のようになります。

char Buf[10];
itoa(123, Buf, 10);
printf("%s", Buf); //Outputs 123

itoa は一部のコンパイラでサポートされていますが、標準の一部ではないことに注意してください。より標準に準拠したバージョンを使用するには:

sprintf(Buf, "%d", 123);

もちろん、これはすべて単純な C ですが、どの C++ コンパイラでも同じように動作します。

于 2013-03-04T12:19:49.087 に答える
0

[0,9] の範囲の数値を対応する文字に変換するには、'0'それに追加するだけです。これは、すべてのシステムで動作することが保証されています。

于 2013-03-04T13:30:23.253 に答える