shiftJISやEUCの文字列をchar型で扱うことができるのでしょうか?
たとえば、shiftJISで「表示」という文字列がメモリ上に存在していて、
それをchar型として扱ってファイルに書き出す、といったことは
問題にならないのでしょうか?
出力がすべて英語で書かれた教本か何かを見てその上での疑問ですか?
一部マルチバイト文字を対象としない関数(atoiやらstrlenやら)
で意図しない動作をするかもしれませんがファイルに書き出すぐらいならできます。
たとえば 'あ' 一文字を char に代入はできません。
たとえ一文字でも文字列として扱うことになります。
そだ様、επιστημη様、
ご回答ありがとうございます。
説明が不足しておりました。申し訳ございません。
shift_jisのバイナリ表現をchar型で扱う際に、
たとえば「表」だと2バイト目が「5c」で\マークとなってしまい、
いろいろなトラブルに巻き込まれるのではないかと思いました。
shift_jisの文字列をファイルに書き出したり読み込んだりする
ことで、たとえ文字列途中に5cが含まれていても問題は発生しないのでしょうか?
char chr[255] = "表t表a表0";
このような文字列をファイルに書き出したり、
また、そのファイルから読み込んだりするときに
トラブルにはならないのでしょうか?
手元でfstreamで試してみると問題なく、書き出し・読み込みが
できているようなのですが。
back-slashによるエスケープはC/C++コードの文字/文字列リテラル内*だけ*で使われるものです。
ファイルIO時にback-slashエスケープは行われません。
# まれにファイル/フォルダ名に"表示画面"とかやってコケるものもありますが。
επιστημη様ありがとうございます。
ということはたとえば、ファイル中に
「abcd\0fg」という文字列があっても
読み込んだときはちゃんと「fg」まで取得できているということですね。
了解しました。
ありがとうございました。
ツイート | ![]() |