为什么在创建wstring时字符串前面有一个L?
e.g。 -
std::string = "regular string :3";
std::wstring = L"wide string :/";
是因为它引用了LPSTR,LPWSTR和LPCSTR?
答案 0 :(得分:6)
你在正确的轨道上说这与LPSTR,LPWSTR和LPCSTR有关,但这并不正是这里发生的事情。这些类型实际上不是标准C ++的一部分,而是与Windows API一起使用的特定于Microsoft的类型集。
C ++有两种内置类型的字符char
,与std::string
一起使用,wchar_t
与std::wstring
一起使用。如果用常规引号编写字符串文字,C ++会将其视为由char
组成的字符串,可以与std::string
一起使用。要告诉C ++你正在尝试创建一个由wchar_t
组成的字符串文字 - 这是你需要用来处理std::wstring
的东西,你需要在它前面添加一个L,因为那是只是如何定义C ++。
请注意,这完全独立于上面提到的Microsoft类型。