当我尝试分析命令行参数时出现奇怪的错误。我为什么称它奇怪?那么,那是因为我事先就C++中的命令行解析进行了大量的研究,没有人的测试代码在我的visual studio 2010 IDE上工作。当我使用调试器时,我发现当我尝试检查参数时,总是返回FALSE。在下面的例子中,我做了一个if(argv [1] ==“-in”)。我试着在观察窗口中以几种不同的方式进行测试。我试着先把它传递给一个字符串。或者使用单引号。然后,我搜索了互联网,并使用了其他人的代码,他们认为这些代码能够起作用。我究竟做错了什么?这是我在Visual Studio环境中设置错误的设置吗?解析C++中的命令行参数。我遇到一个奇怪的错误
这是我原本
#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,但我想知道为什么我的视觉工作室环境不像其他人的系统那样编译?
另外,在调试过程中,我在项目属性的调试部分输入命令行参数。我不知道这是否会影响任何东西。我也尝试过构建和运行这个项目,但唉,一切都无济于事。在此先感谢任何能给我一些好建议的人。
是的,我知道关于strcmp,如上所述。我得到它使用strcmp工作,但这并不能回答我的问题。为什么它适用于其他人,但不是我?我也尝试通过声明一个字符串变量并将argv传递给它来尝试将其转换为C++字符串格式,但这也不起作用。 – Klik
据我所知,它不应该为其他任何人工作,也许这是一个编译器特定的事情,但不知道。 – RoneRackal
在我发布的其中一个链接是一个人问这个具体问题,并在收到建议后使用,“如果(argv [1] ==”-t“)”他说它运作良好。我发布的另一个链接是解析命令行参数的教程。我完全复制了代码,但它不适用于我。嗯... – Klik