2

C++ で char に入れることができる、何も表さない ascii 値はありますか? 0 を試しましたが、最終的にファイルが台無しになり、読み取れません。

4

6 に答える 6

6

ASCII 0 はヌルです。それ以外には、従来の ASCII には「何もない」文字はありません。必要に応じて、SOH (見出しの開始)、STX (テキストの開始)、または ETX (テキストの終了) などの制御文字を使用できます。それらの ASCII 値は、それぞれ 1、2、および 3 です。

この説明に使用した ASCII コードの完全なリストについては、このサイトを参照してください。

于 2008-11-10T22:45:40.510 に答える
3

C ++ソースファイルでは、「\0」は0バイトを表します。ただし、C ++文字列は通常nullで終了します。つまり、「\ 0」は文字列の終わりを表します。これは、ファイルを台無しにしている可能性があります。

本当に0バイトをデータファイルに保存したい場合は、他のエンコーディングを使用する必要があります。単純なものでは、データに表示されない他の文字(たとえば、0xFF)、または長さ/データ形式などを使用します。

使用するエンコーディングが何であれ、ファイルを書き込むアプリケーションとファイルを読み取るアプリケーションは、エンコーディングが何であるかについて合意する必要があります。そして、それはまったく新しい悪夢です。

于 2008-11-10T22:47:20.727 に答える
3

もちろん。通常のデータには表示されない任意の文字値を使用してください。これは一般に、区切りテキスト ファイルと呼ばれます。区切り文字の一般的な選択肢には、スペース、タブ、コンマ、セミコロン、縦棒文字、チルダなどがあります。

于 2008-11-10T22:43:25.507 に答える
1

ヌル文字 '\0' はまだ 1 バイトを占めています。

ソフトウェアはヌル文字をファイルの終わり文字として認識しますか?

ソフトウェアがこのファイルを読み込んでいる場合、プレースホルダー文字 (データとは異なる文字) を定義できますが、その文字も処理する必要があります。たとえば、「*」がプレースホルダーだとします。文字を読み込みますが、データを格納する構造体には追加しません。ファイル内のスペースは引き続き占有しますが、データ構造内のスペースは占有しません。

私はあなたの質問に答えていますか、それとも見逃していますか?

于 2008-11-10T22:41:50.863 に答える
1

実際にファイルを変更しない書き込み可能な値を意味しますか? 答えはノーです。

たぶん、あなたが達成しようとしていることについてもう少し投稿してください。

于 2008-11-10T22:41:53.827 に答える
0

ファイルの種類と、誰が解析しているかによって異なります。

于 2008-11-10T22:42:06.820 に答える