2014-02-28 5 views
0

동일한 질문을 찾을 수는 없다고 말하지만 검색 키워드는 매우 일반적이어서 내 질문에 답하는 스레드를 알고 있다면 나와 나에게 지적하십시오. 이 스레드를 닫을 것입니다.따옴표로 묶은 변수 C++

저는 언어에 대한 확고한 이해를 돕기 위해 C++에서 bash 스크립트를 다시 작성하고 있습니다. 다음과 같이 내가 실행 해요 문제는 :

string input = "/wam/wxx.cpp"; 
string output = "/wam/wxx.exe"; 
system ("/MinGW/bin/g++.exe input -o output"); 

(이것은 단지 작은 그림입니다 내 실제 코드의 변수는 사용자가 입력) 분명히

나는 단어 '입력'을 통과하고 그리고 그 이름의 변수 대신에 '컴파일러'에 '출력'합니다. 나는 시도해 보았습니다.

system ("/MinGW/bin/g++.exe" input "-o" output); 

뿐만 아니라 인용 부호없이 다른 인용 부호 조합도 있지만 어느 것도 작동하지 않습니다. 시스템 명령은 인용 부호를 원하기 때문에 인용 부호에 변수를 올바르게 인식 할 수있는 방법이 있습니까? (현재이 변수를 텍스트 파일에 저장하고 컴파일러를 실행하는 bash 스크립트에로드하여 C++로 작성하는 목적을 저지합니다.)

미리 감사드립니다.

편집 :

string input = "/wam/wxx.cpp"; 
string output = "/wam/wxx.exe"; 
string command = "/MingW/bin/g++.exe " 
command += input; 
command += " -o " 
command += output; 
system(command.c_str()); 

당신은 char 배열로 문자열을 변환 할 std::string::c_str()을해야하고, 당신이 문자열로 std::string를 추가 할 수 없습니다 : 나는이 도움이 될

using namespace std 
+0

이 구문이 유효한 것으로 생각하게 만드는 이유는 무엇입니까? ... – PlasmaHH

+0

당신이 고등학교 중퇴자가되어 프로그래밍을 가르치는 경우 어떻게됩니까?) – 808st8ofmind

+0

그래서 구문을 구성하고 컴파일러가 먹는다면 시도할까요? http://stackoverflow.com/questions/388242 – PlasmaHH

답변

0

가 있기 때문에 (아마도) std::string, 당신은 단지 다음과 같이 +과 함께 붙여 넣을 수 있습니다 :

std::string cmd = "/MinGW/bin/g++.exe"; 

std::string fullcmd = cmd + " " + input + " -o " + output; 
system(fullcmd.c_str()); 

당신은 system 이후 fullcmd.c_str()는 C 스타일의 문자열이 아니라 C++ 스타일의 문자열을 사용합니다.

+0

아름다운! 빠른 답변/설명 주셔서 감사합니다! – 808st8ofmind

0

오전, 명확히하기 위해 그러나 리터럴을 std::string에 추가하거나 std::stringstd::string에 추가 할 수 있습니다.