Joh*_*ver 4 c++ string wchar-t
我是C++的新手,我很难完全理解数据类型的用法.
我将这些变量应用于createwindow参数和带有它的类.这采用LPCWSTR数据类型.
LPCWSTR szTitle = L"Hello";
LPCWSTR szWindowClass = L"There";
Run Code Online (Sandbox Code Playgroud)
因此,我这样做,虽然,我不明白为什么我必须在字符串之前包含L(调试器把它放在那里说实话).我也经常看到字符串被定义为直接类型(相反,我经常看到WCHAR,char等).如果你要制作这些变量,你会怎么写呢?我不相信我应该使用LPCWSTR.再说一遍,我很新,我无法找到我在网上寻找的确切内容.
C++有几种不同的字符类型,这里讨论的是char和wchar_t,并且wchar_t是一些实现定义类型的宽字符.C++中的字符串文字被视为一个字符数组,因此您可以编写
const char* rawString = "I'm a regular old string!";
Run Code Online (Sandbox Code Playgroud)
因为char和wchar_t不一定是同一类型,也可以不写
const wchar_t* rawString = "I'm a regular old string!"; // Error!
Run Code Online (Sandbox Code Playgroud)
因为存在类型不匹配的问题:char右侧有一个s 数组,左侧有一个类型的指针const wchar_t*.因此,C++允许您通过为字符串文字添加前缀来定义宽字符串文字L.结果字符串是一个类型的元素数组wchar_t,所以这将编译:
const wchar_t* rawString = L"I'm a wide string!"; // Totally fine!
Run Code Online (Sandbox Code Playgroud)
微软的别名LPCWSTR基本上是一个const wchar_t*,这就是你需要L前缀的原因.