ほとんどの標準システムでは、charのサイズは8ビットです。シャノンの式を用いて:文字のサイズが8ビットしかないのはなぜですか?
8ビット= log2N
Nが、しかし256
に等しくなければならないユニコードテーブルに256のを超える文字がはるかにあります。そして、私は次のコード行を実行し、私のコンパイラ、上:
char c = static_cast<char> (257);
cout << c;
私は、画面に印刷された未知の文字が、それでも文字を参照してください。
しかし、私は、ファイル内の多くの文字を入れていくつかのテストを実行した、およびファイルのサイズは、char = 8ビットの比に対応します。
charは8ビット(私のシステムでは少なくとも)のようですが、257以上の画面に何かが印刷されているのを見ているだけでなく、256より多くの文字が表示されていますユニコードテーブル。
'char'は(Unicodeの意味で)文字ではなく、「バイト」つまり基本的にアドレス可能なものです。 –
CとC++が1970年代に最初に設計されたとき、Unicodeを使用できなかったのは、それが存在しなかったからです。 –
"ファイルにたくさんの文字を入れる"というのは、もちろん意味があるバイト(オクテット)を意味します。しかし、テキストを意味する場合は、1文字あたり1バイトのサンプル・テキストをすべてエンコードする可能性のある特定の文字エンコードを選択している(またはサポートされていない文字を1バイトでエンコードする文字に置き換える)。 C++では、 'char'はテキストを意味しません。たとえば、あなたの257はテキスト文字として意図されていないようです。 –