2012-12-02 7 views
0

나는 오늘 밤 생각 했어 또 다른 '새로운'것을 : 나는 cmd를 라인에서 읽고 싶어하는 이유는 argc argv와 매개 변수 - (게임 프로그래밍)

int main(argc, char *argv[]) 

내가 볼 수 없습니다 , 그러나 당신은 모릅니다! 왜 나는 단지 getline을 사용하고 그것을 문자열로 읽지 않는 것일까 요? 아니면 getch일까요?

대답은 처리 할 코드의 양과 관련이 있다고 생각합니다. #include <string>과 같은 것을 사용하면 계산력이 적게 사용됩니다. 맞습니까?

이 편집 : 나는 꽤 바보 느낌이 다시 찾고에 올해는 정말 대학 프로그램에 대한 cmd를 라인 입력에 대해 배운 적이 없었다 (내가 바로 알고, 무엇을 좀 물론 나는 오전 ..) :

답변

0

게임 프로그래머이기 때문에 내가 왜 cmd 라인에서 읽으 려하는지 볼 수는 없지만 결코 알 수는 없습니다!

일반적으로 GUI 프로그램의 경우 명령 줄을 통해 전달되는 항목이 숨겨 지거나 디버깅 옵션이되는 경향이 있습니다.

예를 들어 IE에는 일반적인 기본 설정에서 설정할 수없는 -k 명령 줄 스위치가 있습니다. 이 스위치를 사용하면 IE가 키오스크 모드로 실행되고 많은 물건이 비활성화됩니다. 키오스크 모드에서 IE를 실행하면 아무 것도 액세스 할 수 없으므로 일반 사용자는 절대 수행하지 않아야하는 작업입니다 (Windows를 MsIeOS로 바꾸는 것과 같습니다).

Google 크롬에는 명령 행 인수 --first-run이있어 사용자 기본 설정을 다시 초기화하고 첫 번째 실행 설정 대화 상자를 표시합니다. 이는 Chrome 환경 설정을 손상시키는 경우 매우 유용합니다.

게임은 비슷합니다. Halo2에는 전체 화면 대신 창에서 게임을 시작하는 명령 줄 인수 -windowed이 있습니다. Halo2 명령 줄 인수 목록은 다음과 같습니다. http://support.microsoft.com/kb/830487

명령 줄 인수를 사용할 수 없다면 사용하지 마십시오. 그렇다고해서 다른 사람들이 그 용도를 찾을 수 없다는 의미는 아닙니다.

다양한 프로그램의 경우 google "[프로그램 이름] 명령 줄 인수"를 사용하여 무엇이 있는지 알아보십시오. 당신과 같은 사람들이 작성한 프로그램은 명령 줄 인수에 대한 사용을 생각할 수 없으므로 프로그램에 아무 것도 없다는 것을 알게 될 것입니다.

+0

화려한 대답, 감사합니다! 나는 다른 사람들이 그것을 사용할 것이라는 것을 알았고, 내가 그것을 사용해야 할 곳을 알아낼 수 없었다. 그러나 그것은 많이 설명했습니다 - 고맙습니다. – Dezachu

2

argcargv은 표준 입력 및 출력과 아무 관련이 없습니다. 내가

myapp Drink More Ovaltine 

argc

을 말할 경우, "추가"를 선택한 후 "Ovaltine"네 것, 그리고 argv는 "마셔"프로그램의 이름을 포함합니다.

getline은 입력 스트림에서 데이터를 읽습니다. 커맨드 라인 인수를 보지 않습니다. (당신이 argv에서 그들을 가지고와에 넣어하지 않는 한 stringstream, 어쨌든. 그리고 그렇다하더라도, 점? 어떻게 될지) #include에 관해서는

, 중 I/O 실행과는 아무 상관이 없습니다. 컴파일러 (또는 일반적으로 전처리 기)에게 컴파일시 C 소스 파일 을 포함하도록 알려주는 것입니다.. #include은 임의의 이진 파일 일뿐입니다. (include가 끝나면 결과로 나오는 문자들은 유효한 C++ 코드를 구성해야한다). 그리고 런타임 파일이 이미 포함되어있어 - 런타임에 의해, 응용 프로그램은 심지어 파일이 있는지 모르고, 따라서 심지어 그것을 읽을 생각하지 않습니다

짧은 버전 :

  • 합니다. argvargc은 앱을 시작하는 데 사용되는 명령 줄에 액세스 할 수 있습니다. I/O와 전혀 관련이 없습니다.
  • getline은 런타임시 의 입력에 사용되며이며 거의 모든 파일을 읽을 수 있습니다.
  • #include은 컴파일시에에 C++ 코드 을 삽입하는 데 사용되며 실제로는 소스 코드로만 사용될 수 있습니다.

세 가지 메커니즘은 완전히 별개이며 관련이 없으며 다른 메커니즘 대신 거의 사용되지 않습니다.

+0

+1 ovaltine – rjz

+0

예, #include에 대한 내 언급은 'string'을 놓친 이후 완전히 잘못 읽었습니다. 죄송합니다. 나는 당신이 의미하는 바를 따르며, 하나는 실행 시간이고, 하나는 실행 시간이다. 건배.하지만 내 앱을 시작할 때 나는 무엇을 읽을 수 있을까? 여기에 표시되는 nooby 지식을 변명해라. 그러나 나는 시작하기 전에 cmd 라인에 직접적으로 글을 쓰고있는 것이 아니다. .exe를 열 때 CMD에 쓰기를 제안 하시겠습니까? 그냥 이해하려고, 고마워요 :) – Dezachu

+0

.exe는 그것을 실행하기 위해 입력 한 줄 (또는 사용했던 바로 가기에 있던 줄)을 받고, 각 줄을'argv'에 넣습니다. 그게 전부 야. 게임의 경우에는 실제로 사용하지 않아도되지만 특수 정보를 사용하거나 대체 API (OpenGL?) 또는 원하는 것을 사용하려면 해당 정보를 사용할 수 있습니다. 전적으로 당신에게 달려 있습니다. app ... config 파일을 시작할 때 읽는 내용은 무엇입니까? 파일을 매핑 하시겠습니까? 텍스처? 등 – cHao