将_TCHAR * argv []条目从命令行比较到_T(“paramString”)

时间:2010-05-17 02:58:33

标签: visual-studio-2008 visual-c++

我知道如何从命令行获取参数。我也知道如何将它们打印出来。

我遇到的问题是如何将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 个答案:

答案 0 :(得分:1)

您需要使用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;
    }
}

答案 1 :(得分:1)

正如其他答案所说,strcmp()wsccmp()取决于您是否使用UNICODE定义编译,_tcscmp()将为您执行此操作。

答案 2 :(得分:1)

西蒙写道:

  

哪个_tccmp()会为你做什么

这实际上是错误的。 _tccmp()比较字符(因此它只会比较“查找”中的'f')。

_tcscmp()正在做这份工作!

答案 3 :(得分:0)

if (argv[i] == _T("find")) 

这只会比较指针argv[i]和指向"find".的指针。你需要的是比较字符串。您可以使用strcmp,(wcscmp,用于unicode)

  0 == wcscmp( argv[i], _T("find"))