gpt4 book ai didi

c++ - 在 if() 中比较 LPCWSTR

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:20 26 4
gpt4 key购买 nike

我觉得我在这里遗漏了一些非常明显的东西......

在我的程序中,我使用 GetWindowText() 从编辑框中读取用户输入,
后跟此代码:

if (x == L"R" || x == L"C" || x == L"L"){ n = 1; }
else{ n = 9; }

调试器清楚地表明 xL"R",但是 n 被设置为 9。

debugger

在这种情况下使用 if() 是错误的吗?我应该使用其他东西吗?

最佳答案

x 是一个 wchar* 指针。调试器足够智能,可以向您显示 x 指向的数据。实际数据在内存中的其他地方。

L"R" 和其他值是字符串文字。它们被实现为指向存储在您应用的只读数据段中的 wchar_t[] 数组的指针。

您的 if 语句正在将指针与指针进行比较,如果它们不指向同一内存(在本例中,它们不指向同一内存),则比较失败。要比较指向的实际数据,您需要使用 lstrcmpW() 或类似的函数,例如:

if ((lstrcmpW(x, L"R") == 0) ||
(lstrcmpW(x, L"C") == 0) ||
(lstrcmpW(x, L"L") == 0))
{
n = 1;
}
else
{
n = 9;
}

关于c++ - 在 if() 中比较 LPCWSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310471/

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