大人になっても苦手な食べ物、ありますか?

MFCです。

テキストファイルから読み込んだ文字を一定の文字数づつウィンドウに書き込もうとしています。
例えば10文字を一行として

10文字
10文字
10文字




という感じで表示したいのですが、テキストファイルには半角文字と全角文字が混じっています。半角だけなら10バイトごとに表示すればいいと思いますが、半角も全角も一文字としてカウントしようとすると半角か全角かを判別してからカウントしなければならないと思うのですが、何か良い方法ありませんか?

よろしくお願いします。

A 回答 (2件)

テキストファイル文字コードはSJISですよね?



ちょっと変則ですが
buf に該当の文字列が入っているとして
SJIS->UNICODE 変換してやれば「何文字」か簡単にわかりますよ。
ユニコードには半角という概念ないので全ての文字が1文字です。
詳細は mbstowcs() 関数をあたってください。
char buf[100];

setlocale(LC_ALL, "Japanese");
int length = mbstowcs(NULL, buf, 0);
    • good
    • 0
この回答へのお礼

ありがとうございます。
そういうやり方もあったんですね。
なんとかできそうです。

お礼日時:2004/07/14 23:49

試したことはありませんが、isleadbyteをこんな感じで使えばよいのでは。



l = 0;
while ((c = fgetc(fp)) != EOF && l < 10) {
putchar(c);
if (isleadbyte(c)) {
if (fgetc(fp) != EOF) {
putchar(c);
}
}
l++;
}

参考URL:http://msdn.microsoft.com/library/en-us/vccore98 …
    • good
    • 0
この回答へのお礼

ありがとうございます。
非常に参考になりました。

お礼日時:2004/07/14 23:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A