在const wchar_t *上创建一个条件

时间:2017-01-10 11:14:12

标签: c++ pointers

我如何用const wchar_t *制作一个条件?我试过了      const wchar_t* password if (L"xyz" == password) {...} 但它不起作用

谢谢

2 个答案:

答案 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::stringstd::wstring可以使用==来比较字符串,因为这些类会使{{1}重载运算符所以这段代码工作得很好:

==

作为旁注,除非他们以某种方式加密,否则你真的不应该使用常量来在程序中存储密码。