以前从未见过这种语法,谁能解释一下..... return L""
Never seen this syntax before, can someone explain..... return L""
很难在网上找到关于以下语法的解释,在这些论坛中搜索 L"" 也没有提供任何结果。我在 Qt5 中调试一个太长的应用程序,无法粘贴到这里。我正在尝试解决最后一个指向包含 --> return L""; 的代码行的错误。 <--.它是下面函数中的最后几行之一。我收到的编译器错误是...
C2440: 'return': 无法从 'const wchar_t[1]' 转换为 'LPWSTR'
我的第一个问题是这是什么意思 --> L"" <-- ?
最后,我该如何解决这个编译错误?
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"";
}
}
我的假设是因为 wchar_t[1] 是 1 个字节而 LPWSTR 是 2 个字节所以无法转换???我不确定这是否重要,但我在 Qt5 的工具栏中收到另一个错误,提示 "Error: Could not decode "myfile.cpp" with "UTF-8" encoding. Editing not possible"。它为我提供了 select 编码选项。我确定这是因为这段代码是用旧版本的 Qt 编写的,现在因为我正在用 Qt5 重建所有这些代码,所以发生了一些变化。同样,我不确定这是否与我上面的两个问题有关,但我想全面了解正在发生的事情。
一个 "L"(或 'l',虽然大多数人反对它,因为它看起来像 1
)在字符串文字(或字符文字)之前一个 "wide" 文字,所以它包含的是 wchar_t
而不是 char
,它的地址是 wchar_t *
而不是 char *
.
C 和 C++ 标准并未准确指定什么是宽字符。在 Windows 上,它们通常是 16 位,表示 UTF-16 中的字符串。在大多数 Unix-like 系统上,它们通常为 32 位,表示 UCS-4 中的字符串。
在这种特殊情况下,L
之后的 ""
表示它只是返回一个空字符串。
很难在网上找到关于以下语法的解释,在这些论坛中搜索 L"" 也没有提供任何结果。我在 Qt5 中调试一个太长的应用程序,无法粘贴到这里。我正在尝试解决最后一个指向包含 --> return L""; 的代码行的错误。 <--.它是下面函数中的最后几行之一。我收到的编译器错误是...
C2440: 'return': 无法从 'const wchar_t[1]' 转换为 'LPWSTR'
我的第一个问题是这是什么意思 --> L"" <-- ?
最后,我该如何解决这个编译错误?
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"";
}
}
我的假设是因为 wchar_t[1] 是 1 个字节而 LPWSTR 是 2 个字节所以无法转换???我不确定这是否重要,但我在 Qt5 的工具栏中收到另一个错误,提示 "Error: Could not decode "myfile.cpp" with "UTF-8" encoding. Editing not possible"。它为我提供了 select 编码选项。我确定这是因为这段代码是用旧版本的 Qt 编写的,现在因为我正在用 Qt5 重建所有这些代码,所以发生了一些变化。同样,我不确定这是否与我上面的两个问题有关,但我想全面了解正在发生的事情。
一个 "L"(或 'l',虽然大多数人反对它,因为它看起来像 1
)在字符串文字(或字符文字)之前一个 "wide" 文字,所以它包含的是 wchar_t
而不是 char
,它的地址是 wchar_t *
而不是 char *
.
C 和 C++ 标准并未准确指定什么是宽字符。在 Windows 上,它们通常是 16 位,表示 UTF-16 中的字符串。在大多数 Unix-like 系统上,它们通常为 32 位,表示 UCS-4 中的字符串。
在这种特殊情况下,L
之后的 ""
表示它只是返回一个空字符串。