我知道如何从命令行获取参数。我也知道如何将它们打印出来。
我遇到的问题是如何将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;
}
答案 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"))