2017-07-09 5 views
0

でLPCWSTRを追加する「二つのポインタを追加できません」私は2つの変数のように宣言:はWCHAR

WCHAR w_ErrorMessage[256]; 
LPCWSTR lp_ErrMsg; 

最初の変数が返されたSQLiteのエラーメッセージのためであり、第二変数は、メッセージボックスのテキストのためです。私が試したと書いたこのコードを:

lp_ErrMsg = L"Database sql error: " + WCHAR(w_ErrorMessage); 
MessageBox(0, lp_ErrMsg, L"Error", MB_ICONERROR | MB_OK); 

が、このようなものは、メッセージのために示しています ScreenShot

私はw_ErrorMessage変数の後ろにWCHARを削除した場合、私は、「エラー:二つのポインタを追加できません」を取得します。

私はMessageBoxのエラーを表示します。SQLiteエラー:%TheActualErrorMessage%。 どうすればいいですか?

+1

これは、私が見た** Undefined Behavior **の最もきれいで驚くべきケースです。これらの中国語文字が意味を持つかどうかを知ることは興味深いでしょう。 – Scheff

+0

'WCHAR(w_ErrorMessage)'は配列 'w_ErrorMessage'(これはおそらく暗黙のうちに'(WCHAR *) 'に)' WCHAR'に変換します。文字通り、ワイド文字にキャストされたポインタ。これはコンパイラを静かにしますが、おそらく意図したものを提供しません。 Btw .:答えで推奨される 'wcscat()'を使用する場合は、宛先ポインタに十分なメモリを割り当てることを忘れないでください。 – Scheff

答えて

0

+演算子は、C/C++で文字列を連結するためには使用されません。代わりにwcscat関数を使用してください。

関連する問題