Сравните записи _TCHAR * argv [] из командной строки с _T ("paramString") - PullRequest
0 голосов
/ 17 мая 2010

Я знаю, как получить параметры из командной строки. Я также знаю, как их распечатать.

У меня проблема в том, как сравнить параметры из массива argv [] со строкой. Программа работает, но никогда не возвращает результат, где строка параметра равна искомой.

Заранее спасибо.

// Testing.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    for (int i = 0; i < argc; i = i + 1)
    {       
    if (argv[i] == _T("find"))
    {
        wcout << "found at position " << i << endl;
    }
    else
    {
        wcout << "not found at " << i << endl;
    }
}

return 0;
}

Ответы [ 4 ]

1 голос
/ 29 февраля 2012

Саймон написал:

который _tccmp () из сделает для вас

Это на самом деле неправильно. _tccmp() сравнивает символы (поэтому сравнивает только «f» в «find»).

Это _tcscmp() делает работу!

1 голос
/ 17 мая 2010

Как говорят другие ответы, strcmp() или wsccmp() в зависимости от того, компилируете ли вы с определенным UNICODE, что вам подойдет _tcscmp() from.

1 голос
/ 17 мая 2010

Вам нужно использовать функцию strcmp для сравнения. то, что вы делаете, пишите сейчас, просто сравнивая указатели. обратите внимание, что strcmp возвращает 0, если строки равны.

#include "stdafx.h"
#include <iostream> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    for (int i = 0; i < argc; i = i + 1)
    {       
    if (_tcscmp(argv[i], _T("find")==0)
    {
        wcout << "found at position " << i << endl;
    }
    else
    {
        wcout << "not found at " << i << endl;
    }
}
0 голосов
/ 17 мая 2010
if (argv[i] == _T("find")) 

Это будет только сравнение указателей argv[i] и указателя, указывающего на "find".. Вам нужно сравнить строки. Вы можете использовать strcmp, (wcscmp, для Unicode)

  0 == wcscmp( argv[i], _T("find")) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...