- ベストアンサー
CStringから1文字を取り出すには?
CStringから1文字を取り出すために以下のようにして確認しましたが、文字化けした字が表示されてしまいます。 なにかおかしなことをやっているのでしょうか? よろしくご指導下さい。 CString qq="あいう"; dc.TextOut(0,0,qq.GetAt(2);
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 実際には”あいabcう”が何か分かっていない状態で、1文字ずつを取り出したいのです。 関数 _mbsbtype(const unsigned char*, size_t) で、各byteが何であるか判定できます。 マニュアルを読んでください。
その他の回答 (2)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> ”あいabcう”のように全角と半角が混ざっている > ときはどうすれば良いのでしょうか? 各文字に対して何byte目にあるか/何byteで構成されて いるかを判定してください。 # 一旦UNICODEに変換するのがいちばん楽かも…
お礼
回答ありがとう御座います。 言葉足らずですみません。 実際には”あいabcう”が何か分かっていない状態で、1文字ずつを取り出したいのです。 お分かりでしたらお願いいたします。 無理なようでしたら、アドバイスを参考に調べて見ます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
TestOutに与えるべきは 文字列 ですが、 あなたが与えたのは 文字 です。 さらに、"あいう" に対する GetAt(2) の 結果は、2-byteで構成される "い" の 最初の 1-byteです。 dc.TextOut(0, 0, qq.Mid(2,2));
お礼
回答ありがとうございます。 ようやくなんとか1文字を取り出すことが出来たのですが、”あいabcう”のように全角と半角が混ざっているときはどうすれば良いのでしょうか? 何度もすみませんが、宜しくお願いいたします。
お礼
本当に何度もありがとう御座いました。 あとは自力でがんばってみます。