2010-06-22 18 views
0

Je suis nouveau en C++ et j'aimerais savoir comment faire un programme simple où certaines fonctions sont disponibles.Exemple de programme avec quelques fonctions simples en C++

Par exemple:

mypg.exe function1 string1 
mypg.exe function1 textfile1 

Prend le texte de la str/fichier et affiche ou impressions.

Et puis:

mypg.exe function2 string1 
mypg.exe function2 textfile1 

Utilise le texte pour une autre chose ... et ainsi de suite.

Un manuel/tutoriel ou aide? Que devrais-je apprendre pour être capable de faire ceci?

Merci beaucoup :)

+2

Il est probablement une mauvaise idée d'avoir le deuxième argument soit une chaîne ou un fichier texte sans drapeau pour indiquer celui que l'utilisateur veut. Si l'utilisateur appelle 'mypg.exe function1 mystring', le comportement devrait-il vraiment changer selon qu'il se trouve ou non un fichier appelé mystring dans le répertoire courant? – sepp2k

+0

Eh bien, l'idéal devrait être qu'il peut être à la fois une chaîne (donc quelque chose avec ce texte) ou un fichier (.txt, dans ce cas, il ouvre le fichier et prend le texte pour faire quelque chose) – legami

+3

l'utilisateur veut ouvrir un fichier texte qui ne se termine pas par ".txt"? C'est généralement une mauvaise pratique de s'appuyer sur les extensions de noms de fichiers. Si c'était moi, je le laisserais s'appeler comme 'mypg.exe function1" c'est une chaîne "' ou 'mypg.exe function1 -f" c'est un nom de fichier "' – sepp2k

Répondre

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; 
} 

Mise à jour: Ce qui précède est pas vraiment C++, plus comme C. C'est mieux

#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

Je pense que cela peut être utile :) Merci! Qu'en est-il de faire cette chose différente, selon le second argument (si c'est un fichier, extrait le texte et fait la même chose que pour la chaîne (par exemple print)) – legami

+0

@ofme: notez que ceci est C, pas C++. Si vous apprenez le C++, il serait plus utile de connaître la classe 'string' que les fonctions C comme' strcmp'. –

+0

@Mike vous me battre à ma mise à jour de 60 secondes! –

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

Pas vraiment un bon exemple pour un nouveau mec ... –

3

En C++, le programme ne ne pas avoir une idée de ce que sont ses fonctions; C'est-à-dire qu'il n'est pas possible de (relier un nom de fonction sous forme de chaîne) le relier à la fonction d'origine. Toutefois, si vous effectuez cette connexion manuellement, cela peut être réalisé.

#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; 
} 

Bien que vous auriez encore décider de l'opportunité de traiter argv [2] comme une plaine « chaîne » ou comme un nom de fichier.

+0

!strcmp va être source de confusion pour un débutant –

+0

@David Sykes c'est vrai. J'ai fait beaucoup de C dernièrement, donc je n'ai même pas remarqué. Merci et édité. – sigint

Questions connexes