2016-08-06 1 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를 사용합니다.

문제가 발생 :
2. 빌드 :


내가 cmd를

1 build.exe -i follows-로 "\ OA 2 \ Due.exe D"를 사용하여 내 빌드를 실행하면 .EXE -i "D :/OA 2/Due.exe"

결과는 내가 한때와 3 번째 인수를 구문 분석 할 필요가 있음을 알고 같은 -

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. 

뭔가 .
또한, 결과는 전체 Due.exe 파일 위치를 따옴표로 덮여해야하지만 그렇게하지 않는

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



로 삼았해야한다.
코드에서 어떤 문제가 있습니까?

+0

필자는 * \ C : \\ Duevere \ "'만 필요하다고 생각할 때 '\"C : \\\\ DueVER \ "에 4 개의 백 슬래시가있을 수 있다고 생각합니다. 다른 부분 (over-complex)은 나를 위해 작동하는 것처럼 보입니다. (하지만 저는 리눅스를 사용하고 있습니다 ....). – Galik

+0

@Galik 이중 백 슬래시를 사용했습니다. 도움이되지 않습니다. – codenameXera

답변

1

오! 따옴표로 묶인 변수를 사용하여 system() 함수를 호출하는 것을 잊었습니다. system(DueVER.c_str())system(("\""+DueVER+"\"").c_str())으로 바꾸는 것이 저의 작업이었습니다.

관련 문제