参数分析错误
Arguments parsing error
我正试图用以下代码解析控制台应用程序中的运行参数:
int _tmain(int argc, _TCHAR* argv[])
{
if(argv[1] == _T("arg1")) cout<<"Argument1 was passed";
_getch();
return 0;
}
我的代码不起作用。我的意思是,它运行,但控制台是空的。我正在Visual Studio 2012(在Windows 7上)中使用Use Unicode Character Set
选项进行编译。我的错在哪里?!
使用strcmp比较char
阵列
if(strcmp(argv[1], "arg1") == 0)
使用==
只是比较指向两个不同字符串的指针。
参见Darius Kucinskas关于比较_TCHAR
阵列的回答
if (_tcscmp(argv[1], _T("arg1")) == 0) {
cout << "Argument1 was passed" << endl;
}
您有几个错误:
1) 不能使用==运算符比较C样式字符串(字符数组)。argv[#]
是一个字符数组,_T("some value")
也是。为了比较它们,您需要使用strcmp
(或其表亲之一),或将其存储在std::string
中。
2) 您正试图访问数组的第二个元素,但只有一个元素存在。您说您没有向调用传递任何内容,这意味着argv[0]
将包含数据(您正在运行的可执行文件的名称),但argv[1]
不会。通常,尝试访问它将尝试访问数组范围之外的数据,但结果未定义。在这种特殊情况下,标准(第3.6.2节)规定它将始终为0(也称为NULL)。所以你的条件总是错误的。
3) 当需要命令行参数时,应始终检查argc
的值。
相关文章:
- 如何通过参数抛出错误消息
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 为什么 std::绑定错误参数可以成功?
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- g++ 为 transform() 的参数生成错误
- 如何在C++中使用 Void 而不会收到有关参数的错误
- 错误:参数中无效地使用了无效表达式
- xgboost 构建错误:参数包未扩展为"..":
- src/caffe/parallel.cpp:70:1:错误:“参数”未命名类型
- OpenCV 错误:ERClassifierNM1 中的错误参数
- 为什么显示错误:参数太少而无法正常工作
- 算法错误:参数无法从对中掩盖 1
- 类模板方法的专用化,类型名称是类模板 - 错误:参数处的类型/值不匹配
- C++连接函数错误-参数无效
- 错误:参数无效
- (自适应)opencv中的阈值错误(cvarrToMat中的错误参数(未知数组类型))
- OpenCV错误:cvGetSize中的错误参数(数组应该是CvMat或IplImage)
- OpenCV 2.2:未知函数中的错误参数,文件.. .ocv OpenCV modulescoresr
- 错误:参数声明的存储类说明符无效