当我尝试解析命令行参数时,我遇到了一个奇怪的错误。为什么我说它很奇怪?嗯,那是因为我之前已经对 C++ 中的命令行解析做了很多研究,而且没有人的测试代码可以在我的 Visual Studio 2010 IDE 上运行。当我使用调试器时,我发现当我尝试检查参数时总是返回 FALSE。在下面的示例中,当我执行 if (argv[1] == "-in") 时。我尝试在监视窗口中以几种不同的方式对其进行测试。我试着先把它传递给一个字符串。或者使用单引号。然后我在互联网上搜索并使用了其他人的代码,据说这些代码可以正常工作。我究竟做错了什么?这是我在 Visual Studio 环境中设置错误的设置吗?
这是我最初的
#include <iostream>
#include <stdlib.h>
#include <sstream>
#include <fstream>
using namespace std;
int main(int argc, char * argv []) //Usage FileSplitter -in [filename] -sz [chunk size]
{
if (argc==5)
{
string strTest = argv[1];
if ((argv[1] == "-in") && (argv[3] == "-sz"))
{
//Code here
}
}
}
无论如何,那是我的原始代码。我已经尝试对其进行多次调整,并尝试使用以下网站的代码...
http://www.cplusplus.com/forum/articles/13355/ 他有一些比较 argv[1] 和字符串的例子......他说它有效。
http://www.cplusplus.com/forum/unices/26858/ 还有一个人在这里发布了一些关于比较的代码。在 Ryan Caywood 的帖子下。
当我尝试进行比较时,它们对我不起作用。我正在考虑只做一个合法的 strcmp,但我想知道为什么我的 Visual Studio 环境没有像在其他人的系统上那样编译?
另外,在调试过程中,我在项目属性的调试部分输入命令行参数。我不知道这是否会影响任何事情。我也尝试构建和运行该项目,但可惜,一切都无济于事。提前感谢任何能给我一些好的建议的人。