0

MessageBoxW に表示するために、LPCWSTR にさまざまな変数を組み合わせて出力するにはどうすればよいですか? 私は Visual C++ 2008 Express を使用しており、非常に初心者です。私の問題は、文字列にさまざまな変数を追加することです。それは基本的に常に言う: cannot add two pointers . 他のすべてのプログラミング言語のように、2 つの文字列、または文字列と整数を通常の "+" 記号と一緒に追加できないのはなぜですか? Google を使用して stringstream を見つけましたが、うまくいかなかったので、もう提案しないでください。

この 3 種類の変数があります: (はい、私のプログラムは Unicode で実行されます。そのようにする必要があります! ヘッダーで Unicode を定義しました。)

wchar_t username[255];
wchar_t windir1[MAX_PATH];
wchar_t computername1[255];

次に、MessageBox の変数があります。

LPCWSTR message1;

そして、MessageBox のコードがあります。

MessageBox(NULL, message1, L"Info", MB_OK);

3 つの変数すべてをまとめて出力するにはどうすればよいでしょうか。次のコードが機能しません:

message1 = "Computername: " + computername1 + "\n" + "Username: " + username1 + "\n" + "Windows Directory: " + windir1;

エラーは「変換できません...」や「2つのポインターを追加できません...」のようなものです。文字列を簡単に追加するテキスト マクロなどはありますか? 私の研究では、満足のいくものは何も見つかりませんでした。Visual Studio C++ では使用できない .c_str() のような Borland のほとんどの例。

何も追加されていない限り、1 つの変数が出力に機能します。

LPCWSTR message1 = _T(computername1);

しかし、プラス演算子と複数の文字列を一緒に追加して「message1」を出したいと言った方法。

このコンストラクトは既に機能していません: 2 つのポインターを追加できません!

LPCWSTR message1 = _T(computername1) + _T("My Test String");

何の指針?

4

1 に答える 1

2

追加は機能しません。

メモリを割り当てて、文字列を別の場所にコピーする必要があります。良い方法は、wsprintf、または足し算をサポートする C++ クラス std::wstring です。ただし、ワイド文字 (UTF-16) を避け、通常の std::string を使用して加算を行うことをお勧めします。boost::nowide を使用して MessageBoxW() に渡します。詳細については、utf8everywhere.org を参照してください。

于 2012-08-24T21:25:28.973 に答える