为什么分配wstring时会有一个L?
Why is there an L when assigning a wstring?
为什么创建wstring时字符串前面有一个L?
例如-
std::string = "regular string :3";
std::wstring = L"wide string :/";
是因为它被 LPSTR、LPWSTR 和 LPCSTR 引用了吗?
您说对了,这与 LPSTR、LPWSTR 和 LPCSTR 有关,但这不完全是这里发生的事情。这些类型实际上并不是标准 C++ 的一部分,而是一组特定于 Microsoft 的类型,用于 Windows API.
C++ 有两种内置的字符类型,char
与 std::string
一起使用,wchar_t
与 std::wstring
一起使用。如果你用正引号写一个字符串字面量,C++ 会把它当作一个由 char
组成的字符串,它可以和 std::string
一起使用。要告诉 C++ 你正在尝试制作一个由 wchar_t
s 组成的字符串文字——这是你需要用来处理 std::wstring
的内容,你需要在它前面加上一个 L,因为那是C++ 的定义方式。
请注意,这完全独立于上述 Microsoft 类型。
为什么创建wstring时字符串前面有一个L?
例如-
std::string = "regular string :3";
std::wstring = L"wide string :/";
是因为它被 LPSTR、LPWSTR 和 LPCSTR 引用了吗?
您说对了,这与 LPSTR、LPWSTR 和 LPCSTR 有关,但这不完全是这里发生的事情。这些类型实际上并不是标准 C++ 的一部分,而是一组特定于 Microsoft 的类型,用于 Windows API.
C++ 有两种内置的字符类型,char
与 std::string
一起使用,wchar_t
与 std::wstring
一起使用。如果你用正引号写一个字符串字面量,C++ 会把它当作一个由 char
组成的字符串,它可以和 std::string
一起使用。要告诉 C++ 你正在尝试制作一个由 wchar_t
s 组成的字符串文字——这是你需要用来处理 std::wstring
的内容,你需要在它前面加上一个 L,因为那是C++ 的定义方式。
请注意,这完全独立于上述 Microsoft 类型。