Как правильно работать с if
утверждения в этом примере:LPWSTR сравнение
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
не удается.
wcscmp() или аналогичный – rpress
Кроме того, 'станд :: cout' не имеет' '<< оператор, который принимает' 'wchar_t * в качестве входных данных, так что этот код будет ссылаться на' '<< оператор, берет 'void *' как вход и, следовательно, распечатывает адрес памяти, который удерживает указатель, а не содержимое строки, на которое он указывает. Используйте 'std :: wcout' вместо этого, чтобы печатать широкие строки, или конвертировать' args [i] 'в Ansi перед тем, как напечатать его с помощью' std :: cout'. –