string str("test");
から、
MessageBox( NULL, _T(str), _T(str), MB_OK ) ;
な感じで、文字を引数として送り出したいのですが、どうしたらいいのでしょうか?
ちなみに、
MessageBox( NULL, _T(str.c_str()), _T(str.data()), MB_OK ) ;
などとしてみると、
Lstrが定義されていません。
と出てきます。Lがどこから出てきたのかなど、よくわかりません。
教えてくださると幸いです。
string strから_T(str)みたいにしてマルチバイト文字列(?)を作りたい
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: string strから_T(str)みたいにしてマルチバイト文字列(?)を作りたい
_T()マクロについて説明しておきます。
_T()マクロはコンパイルオプションで展開が変わるマクロでUNICODE時はL、マルチバイト文字時は空文字と置き換わります。
つまり、Lの出処は_T()マクロです。
それとL"文字列"はワイド文字文字列ですので調べてみてください。
Tが頭文字のVC++特有の動作については下記をご覧ください。
「Visual C++雑多メモ ー TCHAR編」
http://www.02.246.ne.jp/~torutk/cxx/vc/misc_tchar.html
_T()マクロはコンパイルオプションで展開が変わるマクロでUNICODE時はL、マルチバイト文字時は空文字と置き換わります。
つまり、Lの出処は_T()マクロです。
それとL"文字列"はワイド文字文字列ですので調べてみてください。
Tが頭文字のVC++特有の動作については下記をご覧ください。
「Visual C++雑多メモ ー TCHAR編」
http://www.02.246.ne.jp/~torutk/cxx/vc/misc_tchar.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: string strから_T(str)みたいにしてマルチバイト文字列(?)を作りたい
デフォルトで何も考えずstringを使っていましたが、
その正体はbasic_string<char>だったのですね!初めて知りました。
解決して良かったです。
_Lはマクロだったのですね。
ワイド文字など、まだまだ勉強不足なことがわかります。
ありがとうございました。
その正体はbasic_string<char>だったのですね!初めて知りました。
解決して良かったです。
_Lはマクロだったのですね。
ワイド文字など、まだまだ勉強不足なことがわかります。
ありがとうございました。