2010-06-22 3 views
0

저는 C++을 처음 접했고 몇 가지 기능을 사용할 수있는 간단한 프로그램을 어떻게 만들 수 있는지 알고 싶습니다. 예를 들어C++에서 간단한 함수를 사용하는 예제 프로그램

:

mypg.exe function1 string1 
mypg.exe function1 textfile1 

는 STR/파일을 표시하거나 인쇄에서 텍스트를 이동합니다.

: 그리고

mypg.exe function2 string1 
mypg.exe function2 textfile1 

는 ... 다른 일을 위해 등등 와 텍스트를 사용합니다.

매뉴얼/튜토리얼이나 도움이 필요하십니까? 이 작업을 수행하기 위해서는 무엇을 배워야합니까?

고마워요 :)

+2

두 번째 인수를 사용자가 원하는 것을 나타내는 플래그가없는 문자열 또는 텍스트 파일로 만드는 것은 좋지 않은 생각입니다. 사용자가'mypg.exe function1 mystring'을 호출하면 현재 디렉토리에 mystring이라는 파일이 있는지 여부에 따라 동작이 실제로 변경되어야합니까? – sepp2k

+0

글쎄, 그것은 문자열 (그래서 그것은이 텍스트와 함께 뭔가를 할 수 있습니다) 또는 파일 (. txt, 그 경우에는 파일을 열고 뭔가를하도록 텍스트를 취함)이 될 수 있어야합니다. – legami

+3

만약 사용자가 ".txt"로 끝나지 않는 텍스트 파일을 열길 원합니까? 일반적으로 파일 이름 확장명을 사용하는 것은 좋지 않습니다. 그것이 나 였다면,이 파일은'mypg.exe function1 "과 같이 호출되도록 할 것입니다. 이것은 문자열"'또는'mypg.exe function1 -f "입니다.이 파일 이름은" – sepp2k

답변

8
void DifferentThing(char *s) 
{ 
    printf("DifferentThing %s\n",s); 
} 

int main (int argc, char * const argv[]) 
{ 
    if (argc > 2) 
    { 
     if (strcmp(argv[1], "function1") == 0) 
      printf("%s\n",argv[2]); 
     else if (strcmp(argv[1], "function2") == 0) 
      DifferentThing(argv[2]); 
    } 
    return 0; 
} 

업데이트 :은 위의 정말 C++가 더 C.처럼이

C에서
#include <iostream> 
#include <string> 

void DifferentThing(const std::string &s) 
{ 
    std::cout << "DifferentThing " << s << std::endl; 
} 

int main (int argc, char * const argv[]) 
{ 
    if (argc > 2) 
    { 
     std::string param1(argv[1]); 
     std::string param2(argv[2]); 

     if (param1 == "function1") 
      std::cout << param2 << std::endl; 
     else if (param1 == "function2") 
      DifferentThing(param2); 
    } 
    return 0; 
} 
+0

나는 이것이 유용 할 수 있다고 생각한다. :) 고마워! 두 번째 인수에 따라 다른 일을하는 것은 어떨까요 (파일 인 경우 문자열을 추출한 다음 (예 : print)) – legami

+0

@ofme :이 것은 C가 아니라 C++. C++을 배우고 있다면,'strcmp'와 같은 C 함수보다'string' 클래스에 대해 배우는 것이 더 유용 할 것입니다. –

+0

@ 60 초 동안 내 업데이 트에 나를 이겼어! –

1
int main(int argc, char * argv[]) 
{ 
    // argc - num of command line arguments 
    // argv - arguments 
} 
+0

새로운 사람을위한 좋은 예는 아니지만 ... –

3

는 ++, 프로그램이 실행 더 나은되지 않는다 함수가 무엇인지 알지 못한다. 즉, 함수 이름이 문자열로 주어지면 원래 함수로 다시 링크 할 수 없습니다.

그러나 수동으로 연결하면이 작업을 수행 할 수 있습니다.

#include <iostream>//for cout 
#include <string.h>//for strcmp 

using namespace std; 

int main(int argc,char **argv){ 

    if(argc<3){ 
     cout << "not enough parameters\n"; 
     return 0; 
    } 

    if(strcmp(argv[1],"fuction1") == 0){//strcmp() returns 0 if the two strings match 
     //call function1 and do something with argv[2] 
    }else if(strcmp(argv[1],"function2") == 0){ 
     //call function2 and do something with argv[2] 
    } 

    return 0; 
} 

여전히 치료 여부를 결정해야하지만

는 argv [2] 일반 "문자열"이나 파일 이름으로.

+0

!strcmp는 초보자에게 혼란스러워 할 것입니다. –

+0

@David Sykes 이것이 사실입니다. 나는 C를 많이 했어. 그래서 알지도 못 했어. 감사와 편집. – sigint

관련 문제