LPWSTR比较

时间:2015-02-27 22:24:07

标签: c++ visual-studio

如何正确处理此示例中的if语句:

int n_args = 0;
int i;
LPWSTR *args = CommandLineToArgvW(GetCommandLineW(), &n_args);
if (args)
{
    if (n_args >= 2)
    {
        for (i = 1; i < n_args; i++)
        {
            std::cout << args[i] << "\n";
            if (args[i] == L"/D") // <-- here
            {
                std::cout << "Condition met\n";
            }
        }
    }
}

第一个std::cout显示已传递命令行参数,但以下if语句失败。

2 个答案:

答案 0 :(得分:4)

if (wcscmp(L"/D", args[i]) == 0)
{

您正在尝试比较两个指针值。您需要使用strcmp或它的宽字符串版本wcscmp。当字符串包含相同内容时,此函数返回0.

答案 1 :(得分:0)

args [i]是一个字符串。你需要使用wcscmp或strcmp来比较两个字符串。 https://msdn.microsoft.com/en-us/library/e0z9k731.aspx