8

私は次のコードを書きました:

 #include <iostream>
 #include <iomanip>
 #include <stdint.h>

 using namespace std;

 int main()
 {
     uint8_t c;

     cin  >> hex >> c;
     cout << dec << c;

     return 0;
 }

しかし、c—16進数で12を入力すると、出力も。になりcます。私は12を期待していました。後で私はそれを学びました:

uint8_t通常はのtypedefですunsigned char。したがって、実際にはcASCII0x63として読み取られます。

I / Oを実行している間は整数として動作し、charとしては動作しない1バイト整数はありますか?

4

2 に答える 2

4

私が知っていることではありません。

より広い整数型を使用して I/O を実行し、必要に応じて範囲チェックとキャストを使用できます。

于 2012-12-10T16:13:03.883 に答える
1

残念ながら方法もわかりませんが、16 進数を整数型に読み込むには、次のようにします。

#include <iostream>
using namespace std;

int main () {
    short c;
    cin >> std::hex >> c;
    cout << c << endl;
    return 0;
}
于 2012-12-10T18:18:41.140 に答える