• ベストアンサー

CStringから1文字を取り出すには?

CStringから1文字を取り出すために以下のようにして確認しましたが、文字化けした字が表示されてしまいます。 なにかおかしなことをやっているのでしょうか? よろしくご指導下さい。 CString qq="あいう"; dc.TextOut(0,0,qq.GetAt(2);

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> 実際には”あいabcう”が何か分かっていない状態で、1文字ずつを取り出したいのです。 関数 _mbsbtype(const unsigned char*, size_t) で、各byteが何であるか判定できます。 マニュアルを読んでください。

mk1234
質問者

お礼

本当に何度もありがとう御座いました。 あとは自力でがんばってみます。

その他の回答 (2)

回答No.2

> ”あいabcう”のように全角と半角が混ざっている > ときはどうすれば良いのでしょうか? 各文字に対して何byte目にあるか/何byteで構成されて いるかを判定してください。 # 一旦UNICODEに変換するのがいちばん楽かも…

mk1234
質問者

お礼

回答ありがとう御座います。 言葉足らずですみません。 実際には”あいabcう”が何か分かっていない状態で、1文字ずつを取り出したいのです。 お分かりでしたらお願いいたします。 無理なようでしたら、アドバイスを参考に調べて見ます。

回答No.1

TestOutに与えるべきは 文字列 ですが、 あなたが与えたのは 文字 です。 さらに、"あいう" に対する GetAt(2) の 結果は、2-byteで構成される "い" の 最初の 1-byteです。 dc.TextOut(0, 0, qq.Mid(2,2));

mk1234
質問者

お礼

回答ありがとうございます。 ようやくなんとか1文字を取り出すことが出来たのですが、”あいabcう”のように全角と半角が混ざっているときはどうすれば良いのでしょうか? 何度もすみませんが、宜しくお願いいたします。

関連するQ&A