2010-06-22 81 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 2010-06-22 12:56:16

+0

那么,理想的应该是它既可以是一个字符串(所以它对这个文本做了些什么)或者一个文件(.txt,在这种情况下,它打开文件并且使文本做一些事情) – legami 2010-06-22 13:05:07

+3

如果用户想要打开一个不以“.txt”结尾的文本文件?依靠文件扩展名通常是不好的做法。如果是我,我会让它被称为“mypg.exe function1”,这是一个字符串“'或'mypg.exe function1 -f”这是一个文件名“' – sepp2k 2010-06-22 13:24:29

回答

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.这是更好的

#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

我认为这可以是有用的:)谢谢! 根据第二个参数(如果它是一个文件,提取文本然后执行与字符串相同的操作(例如打印),那么做什么不同的事情) – legami 2010-06-22 13:09:06

+0

@ofme:请注意,这是C,而不是C++。如果您正在学习C++,那么了解'string'类比像'strcmp'这样的C函数更有用。 – 2010-06-22 13:41:46

+0

@Mike你击败了我60秒的更新! – 2010-06-22 13:43:58

1
​​
+0

对于一个新人来说并不是一个很好的例子...... – 2010-06-22 13:03:04

3

在C++中,该程序的功能不知道它的功能叫什么;也就是说,不可能(当给出函数名称作为字符串时)将其链接回原始函数。

但是,如果您手动进行此连接,则可以实现此目的。

#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会让初学者感到困惑 – 2010-06-22 13:29:05

+0

@David Sykes的确如此。我最近做了很多C,所以我没有注意到。感谢和编辑。 – sigint 2010-06-22 14:18:23