2016-08-06 4 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. MinGW32でCode :: Blocksを使用しています。 follows-

として

私はCMDを使用して、私のビルドを実行する1. build.exe -i "D:\ OA 2 \ Due.exe"

遭遇した問題
2.ビルド.EXE -i "D:/ OA 2/Due.exe"、

結果がlike-

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回目引数を解析する必要があることを知っていますおっと!
さらに、結果は全体 Due.exeファイルの場所は引用符で覆われなければならないが、それは起こりません

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



like-でなければなりません。
コードで何が問題になっていますか?

+0

問題が、\ * C:\\\\ Duevery \ "'のために4つのバックスラッシュを持っていると思われます。他の部分(複雑すぎても)は私にとってはうまくいくようです(しかし私はLinux上にいるので....)。 – Galik

+0

@Galik 二重バックスラッシュを使用しました。それは助けにはならない。 – codenameXera

答えて

1

ああ! system()関数を引用符で囲まれた変数で呼び出すことを忘れました。 system(DueVER.c_str())system(("\""+DueVER+"\"").c_str())に置き換えても私の仕事は終わった。

関連する問題