Как получить элемент из argv []

Это 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») никогда не оценивается как истина

Что я пропускаю или не понимаю?

2

Решение

Вы не можете сравнить строки в стиле C (char *) с == потому что он сравнивает только указатель, а не указанную строку.

Вы можете использовать strcmp:

if (strcmp(argv[1], "X") == 0)

или убедитесь, что хотя бы одна сторона сравнения является строкой C ++:

if (std::string(argv[1]) == "X")
4

Другие решения

использование if(strcmp(argv[1],"X")==0) ..., Должен решить проблему.

0

По вопросам рекламы [email protected]