CStringの文字列をASCIIコードの文字列に変換するには?

解決


LA  2010-01-19 23:57:34  No: 71283

開発環境はVC2005です。
CStringの文字列をASCIIコードの文字列に変換する方法を教えてください。
例えば、

CString tmp = _T("ABC");
CString strAscii;

/* ASCIIコードに変換する処理。 */

AfxMessageBox( strAscii );

とした場合、メッセージボックスに"0x41 0x42 0x43"と表示されるようにしたいのですが。
ちなみに、文字AはASCIIコードで0x41、文字BはASCIIコードで0x42、文字CはASCIIコードで0x43です。
ご教授よろしく願致します。


tetrapod  2010-01-20 00:18:56  No: 71284

この問題、文字のコード表現という難しい問題をはらんでいるので、
ASCII コードにない文字をどう表記すればいいのか、その要求仕様で変わる。
"ABC" に対して "0x41 0x42 0x43" はまあいいとして
"あいう" に対してどう表記されればいいの?
まずはその辺から。


LA  2010-01-20 01:01:26  No: 71285

早速のお返事ありがとうございます。
すみません、説明不足でした。

CString tmpには、
ひらがな、カタカナは含まないものとします。
含むものはアルファベット、数字のみです。

よろしくお願いいたします。


Blue  2010-01-20 01:12:23  No: 71286

具体的に何がわからないのでしょうか?

CString tmp = _T("ABC");

とすれば、

tmp[0] が _T('A'), tmp[1] が _T('B'), tmp[2] が _T('C'), tmp[3] が _T('\0')
というのはわかりますよね?
(すべてTCHAR型)

TCHAR c = _T('A');

数値ですと 0x0041 です。

数値をCStringにいれるときは CString::Format(場合によってCString::AppendFormat)が便利です。


tetrapod  2010-01-20 01:13:00  No: 71287

んぢゃ、難しい話は抜きにして 'A' から "0x41" を作ることはできる?
それができれば後は簡単だよね。


LA  2010-01-20 04:01:42  No: 71288

解決しました。  ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加