2017-01-17 10 views
-3

以下の構文でオンラインで説明を探して、これらのフォーラムでL "を検索しようとすると、結果が得られませんでした。私はここに貼り付けるのに時間がかかりすぎるアプリケーションをデバッグするQt5の中にいます。私はこの最後のエラーを解決しようとしています - > return L ""を含むコード行を指しています。 < - 。下の関数の最後の行の1つです。 「リターン」:私が受けてるコンパイルエラーが...前にこの構文を見たことがない、誰かが説明できるか.....返信L ""

C2440あるから変換することはできません「のconst wchar_t型[1]」「LPWSTR」

私の最初の質問は、この平均値を何であるに - →L "" < - ?

最後に、このコンパイラエラーを解決するにはどうすればよいですか? wchar_tの[1] 1バイトであるとLPWSTRはそれが変換することができません2バイトであるため

LPWSTR ImageThread::getLastErrorString(DWORD lastError) 
    { 
     DWORD result = FormatMessage(
      FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 
      NULL, 
      lastError, 
      LANG_USER_DEFAULT, 
      errorString, 
      sizeof(errorString), 
      NULL); 
     if (result > 0) 
     { 
      return errorString; 
     } 
     else 
     { 
      return L""; 
     } 
    } 

私の仮定があります?私はこれが重要かどうかは分かりませんが、Qt5のツールバーに別のエラーが表示されています。 "エラー:" UTF-8 "エンコーディングで" myfile.cpp "をデコードできませんでした。エンコードを選択するオプションがあります。 Qt5でこのコードをすべて再ビルドしているので、これはQtの古いバージョンで書かれていたという事実によると確信しています。繰り返しますが、これは上記の2つの質問に関連するものではありませんが、私は何が起こっているのかを完全に描きたかったのです。

+0

これらのフォーラムでは、L ""のための_searchingは結果を提供していません_ SO **は**フォーラムではありません!更新:_私の前提は、wchar_t [1]が1バイトで、LPWSTRが2バイトで変換できないからです。あなたは 'wchar_t [1]'が1バイトであるとの結論をどのようにしましたか?または 'LPWSTR'は2バイトですか?一般的に、コンパイラは 'L '"が 'const'であると不平を言っていますが、あなたの関数は' 'const' 'の値を返しません。 –

+0

http://stackoverflow.com/questions/6384118/what-does-the-l-in-front-a-string-mean-in-c – AlexanderVX

+1

エラーについては何も言えませんが、 'L" "のような文字列リテラル接頭辞はここにあります:http://en.cppreference.com/w/cpp/language/string_literal – HolyBlackCat

答えて

2

文字列リテラル(または文字リテラル)が「ワイド」リテラルになる前に、「L」(または「l」、それは多くの場合、それが1のように見えるために推奨されます)含まれているのはcharの代わりにwchar_tであり、そのアドレスはchar *ではなくwchar_t *です。

CおよびC++標準では、ワイド文字が正確に指定されていません。 Windowsでは、通常は16ビットでUTF-16の文字列を表します。ほとんどのUnixライクなシステムでは、通常は32ビットで、UCS-4の文字列を表します。

この特定のケースでは、Lの後の""は、空の文字列を返すだけであることを意味します。

関連する問題