gpt4 book ai didi

c++ - 为什么我需要在字符串前加上一个 L 并且我是否正确地创建了这个变量?

转载 作者:太空狗 更新时间:2023-10-29 20:35:23 24 4
gpt4 key购买 nike

我是 C++ 的新手,无法完全理解数据类型的用法。

我将这些变量应用于 createwindow 参数和类。这需要一个 LPCWSTR 数据类型。

LPCWSTR szTitle = L"Hello";
LPCWSTR szWindowClass = L"There";

因此我这样做了,虽然,我不明白为什么我必须在字符串之前包含 L(老实说,调试器把它放在那里)。我也不太经常看到字符串被定义为直接类型(相反,我经常看到 WCHAR、char 等)。如果你要制作这些变量,你会怎么写?我认为我不应该使用 LPCWSTR。再次抱歉,我是新手,无法在网上准确找到我要找的东西。

最佳答案

C++ 有几种不同的字符类型,这里讨论的是 charwchar_twchar_t 是一个 wide某些实现定义类型的字符。 C++ 中的字符串文字被视为字符数组,因此您可以这样写

const char* rawString = "I'm a regular old string!";

因为charwchar_t不一定是同一类型,所以不能这样写

const wchar_t* rawString = "I'm a regular old string!"; // Error!

因为存在类型不匹配:您在右侧有一个 char 数组,在左侧有一个类型为 const wchar_t* 的指针。因此,C++ 允许您通过在字符串文字前加上 L 来定义宽字符串文字。结果字符串是 wchar_t 类型元素的数组,因此这将编译:

const wchar_t* rawString = L"I'm a wide string!"; // Totally fine!

Microsoft 的别名 LPCWSTR 本质上是一个 const wchar_t*,这就是您需要 L 前缀的原因。

关于c++ - 为什么我需要在字符串前加上一个 L 并且我是否正确地创建了这个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com