我如何用const wchar_t *制作一个条件?我试过了
const wchar_t* password
if (L"xyz" == password)
{...}
但它不起作用
谢谢
答案 0 :(得分:2)
你应该看看wcscmp
IntelliJ 15.0.6
答案 1 :(得分:0)
当您执行L"xyz" == whatever
(甚至是非宽版本"xyz" == whatever
)时,您正在比较指针,而不是字符串内容。
E.g。假设您的变量password
存储在内存中的0x00100000
位置,常量L"xyz"
存储在0x00200000
位置。当您使用行L"xyz" == password
执行相等测试时,它实际比较的是0x00100000 == 0x00200000
,这显然永远不会成为现实。
您需要做的是使用库函数wcscmp
来比较宽字符串。但是,由于它被标记为C ++,因此除非您有理由使用C字符串,否则应使用std::wstring
和重载operator ==
。这可能是您感到困惑的地方:使用std::string
或std::wstring
时可以使用==
来比较字符串,因为这些类会使{{1}重载运算符所以这段代码工作得很好:
==
作为旁注,除非他们以某种方式加密,否则你真的不应该使用常量来在程序中存储密码。