Это C ++
В строке windows cmd пользовательские типы
p3.exe X <data.txt
где «p3.exe» — это имя программы,
«Х» будет 1, 2 или 3,
и «data.txt» — это текстовый файл, который программа использует для ввода.
Внутри основного метода я ожидаю, что argv [1] будет соответствовать строке X, напечатанной в строке cmd. На самом деле, если я делаю
wcout << argv[1]
выход «X», как и ожидалось.
Так что теперь я делаю это,
int main(int argc, char* argv[])
{
if (argc > 1)
{
if (argv[1] == "X")
{
//do stuff
}
}
return 0;
} // end main
Но (argv [1] == «X») никогда не оценивается как истина
Что я пропускаю или не понимаю?
Вы не можете сравнить строки в стиле C (char *
) с ==
потому что он сравнивает только указатель, а не указанную строку.
Вы можете использовать strcmp
:
if (strcmp(argv[1], "X") == 0)
или убедитесь, что хотя бы одна сторона сравнения является строкой C ++:
if (std::string(argv[1]) == "X")
использование if(strcmp(argv[1],"X")==0) ...
, Должен решить проблему.