为什么分配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++ 有两种内置的字符类型,charstd::string 一起使用,wchar_tstd::wstring 一起使用。如果你用正引号写一个字符串字面量,C++ 会把它当作一个由 char 组成的字符串,它可以和 std::string 一起使用。要告诉 C++ 你正在尝试制作一个由 wchar_ts 组成的字符串文字——这是你需要用来处理 std::wstring 的内容,你需要在它前面加上一个 L,因为那是C++ 的定义方式。

请注意,这完全独立于上述 Microsoft 类型。