2016-08-06 41 views
-3


我一直無法解析用下面的代碼的生成可執行文件:
如何解析以下C++代碼中的參數?

#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.構建.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 參數與曲OTES。
此外,該結果應該是喜歡 -

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


整個 Due.exe文件的位置必須用引號覆蓋,但這並沒有發生。
代碼中出了什麼問題?

+0

我懷疑這個問題可能在'\「C:\\ DueVER \」'上有四個反斜槓,當我認爲*你只需要2:'\「C:\\ DueVER \」'。另一部分(雖然過於複雜)似乎適用於我(但我在Linux上,所以......)。 – Galik

+0

@Galik 我用雙反斜槓。它沒有幫助。 – codenameXera

回答

1

哦! 我忘記了用引號中的變量調用system()函數。 替換system(DueVER.c_str())system(("\""+DueVER+"\"").c_str())做了我的工作。