为什么在分配wstring时会出现L?

时间:2016-07-29 02:17:34

标签: c++ string wstring

为什么在创建wstring时字符串前面有一个L?

e.g。 -

std::string = "regular string :3";
std::wstring = L"wide string :/";

是因为它引用了LPSTR,LPWSTR和LPCSTR?

1 个答案:

答案 0 :(得分:6)

你在正确的轨道上说这与LPSTR,LPWSTR和LPCSTR有关,但这并不正是这里发生的事情。这些类型实际上不是标准C ++的一部分,而是与Windows API一起使用的特定于Microsoft的类型集。

C ++有两种内置类型的字符char,与std::string一起使用,wchar_tstd::wstring一起使用。如果用常规引号编写字符串文字,C ++会将其视为由char组成的字符串,可以与std::string一起使用。要告诉C ++你正在尝试创建一个由wchar_t组成的字符串文字 - 这是你需要用来处理std::wstring的东西,你需要在它前面添加一个L,因为那是只是如何定义C ++。

请注意,这完全独立于上面提到的Microsoft类型。