如何解析以下C ++代码中的参数?

时间:2016-08-06 15:20:39

标签: c++ c++11


我无法使用以下代码的构建来解析可执行文件:

#include <iostream>
#include <fstream>
#include <string.h>
#include <windows.h>

using namespace std;

int main(int argc,char** argv)
{
    if(argc==3)
    {
        if(strcmp(argv[1],"-i")==0)
        {
            string DueEXE, DueVER;
            DueEXE = DueVER = "";
            DueEXE += argv[2];
            cout << endl << DueEXE;
            DueVER += "\"" + DueEXE + "\" -ver > \"C:\\\\DueVER\"";
            cout << endl << DueVER << endl << endl;
            system(DueVER.c_str());
        }
    }
    return 0;
}


先决条件:

1。 DueEXE 将文件位置保存到打印(在控制台中)的* .exe文件中与-ver或--ver一起使用时的版本 2。我使用的是Windows XP SP3 3。如果重要的话,我使用Code :: Blocks和MinGW32。

遇到问题:

当我使用 cmd 执行构建时,如下所示 -

1。 build.exe -i“D:\ OA 2 \ Due.exe”
2。 build.exe -i“D:/ OA 2 / Due.exe”,

D:/OA 2/Due.exe
D:/OA 2/Due.exe -ver > "C:\DueVER"

'D:/OA' is not recognized as an internal or external command,
operable program or batch file.

我知道我必须用引号解析3 rd 参数 此外,结果应该像 -

"D:/OA 2/Due.exe"
"D:/OA 2/Due.exe" -ver > "C:\DueVER"


整个 Due.exe 文件位置必须用引号括起来,但这不会发生。
代码中出了什么问题?

1 个答案:

答案 0 :(得分:1)

哦! 我忘了用引号括起来的变量调用system()函数。 用system(DueVER.c_str())取代system(("\""+DueVER+"\"").c_str())完成了我的工作。