• 締切済み

VCでの文字列処理の問題

エンコードUTF8のファイルをバイナリモードで読み込んできて、charのバッファに いれてあって、strstrでファイルにある"スキップ"という文字列を検索したいです。 ファイルに"スキップ"という文字列がありますが、検索できてないことは、なぜ? どうやって検索できる? 教えていただきたいです?

みんなの回答

回答No.3

※以下はファイル中に特定文字列があるかないかを調べることだけを前提での回答です。 "スキップ"という文字列をUFT-8のコードでchar型配列に格納して、 再度strstrを使うとか。 文字コードの変換は Windows APIの MultiByteToWideChar→WideCharToMultiByte をつかったりすればできます。 # もとからUnicodeにしておいたほうが簡単そうですが。 が、探す文字列が固定であれば先にUTF-8のコードを調べておけば 簡単にできそうです。 char findText[] = "\xe3\x82\xb9\xe3\x82\xad\xe3\x83\x83\xe3\x83\x97";

ikutame
質問者

お礼

返答ありがとうございます。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

環境がわかりませんが… バイナリで読んだデータはUTF-8だとして、 比較しようとした"スキップ"の方はどうやって定義しましたか? 単に"スキップ"とかくと、コンパイラ次第でUTF-8とは限りませんので、 いわゆるSJISなどになっている可能性がありますが大丈夫ですか。 文字コードが違っていると当然合致しません。

ikutame
質問者

補足

環境は、VS2005です。 ソース上では、sjisになると思います。 ですので、どうすればいいですか? 何かの変換する必要ですか?

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

ご質問とともに、書かれたコードを見せてくだされば、 ムダなやりとりをしなくてすむと思います。

ikutame
質問者

補足

簡単な例を示します。 char*filename= "C:\\temp\\Log.log"; このファイルのエンコードはUTF8です。その中にスキップという文字列があります。 FIE * fp= fopen(filename,"r+b"); これで開きます。 char buff[1024]; fgets(buff,1024,fp); でファイルの読みます。 strstr(buff,"スキップ"); で検索したら、マッチしないです。 以上です。よろしくお願いします

関連するQ&A