C++ 在const wchar\t上设置一个条件*

C++ 在const wchar\t上设置一个条件*,c++,pointers,C++,Pointers,我怎样才能用const wchar\u t*创造条件?我已经试过了 常量wchar\u t*密码 如果(L“xyz”==密码) {...} 但它不起作用 谢谢你你应该看看 当您在执行L“xyz”==任何(甚至是非宽幅版本,“xyz”==任何)时,您是在比较指针,而不是字符串内容 例如,假设变量password存储在内存中的位置0x00100000,常量L“xyz”存储在位置0x00200000。当您使用行L“xyz”==password执行相等性测试时,它实际比较的是0x00100000==

我怎样才能用const wchar\u t*创造条件?我已经试过了

常量wchar\u t*密码
如果(L“xyz”==密码)
{...}
但它不起作用


谢谢你

你应该看看

当您在执行
L“xyz”==任何
(甚至是非宽幅版本,
“xyz”==任何
)时,您是在比较指针,而不是字符串内容

例如,假设变量
password
存储在内存中的位置
0x00100000
,常量
L“xyz”
存储在位置
0x00200000
。当您使用行
L“xyz”==password
执行相等性测试时,它实际比较的是
0x00100000==0x00200000
,这显然永远不会是真的

您需要做的是使用库函数
wcscmp
比较宽字符串。但是,由于这被标记为C++,所以您应该使用<代码> STD::WScGe< /COD>和重载<代码>运算符==/COD>。除非您有理由使用C字符串。这可能是您感到困惑的地方:当使用
std::string
std::wstring
时,您可以使用
=
来比较字符串,因为这些类重载了
=
操作符,所以此代码工作正常:

#include <iostream>
#include <string> 

int main(int argc, char *argv[])
{
    std::wstring wstr = L"Hello World";
    if(wstr == L"Hello World")
    {
        std::wcout << wstr << std::endl;
    }
    return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
std::wstring wstr=L“你好,世界”;
if(wstr==L“你好世界”)
{

std::wcout或使用
std::wstring
。比较内容而不是容器我想比较内容而不是容器pointers@A.Adil那么,这样做?为了将来参考,“不工作”不是有用的问题描述。如上所述,您的代码只是比较变量的地址,因此您的if(L“xyz”==密码)将始终失败。如果要查看文本是否相等,则需要使用wcscmp(L“xyz”,密码)。
#include <iostream>
#include <string> 

int main(int argc, char *argv[])
{
    std::wstring wstr = L"Hello World";
    if(wstr == L"Hello World")
    {
        std::wcout << wstr << std::endl;
    }
    return 0;
}