在C ++中使用一些简单函数的示例程序

时间:2010-06-22 12:48:13

标签: c++ exe

我是C ++的新手,我想知道如何在有一些功能可用的情况下做一个简单的程序。

例如:

mypg.exe function1 string1
mypg.exe function1 textfile1

从str /文件中获取文本并显示或打印。

然后:

mypg.exe function2 string1
mypg.exe function2 textfile1

将文字用于其他事物...... 等等。

任何手册/教程或帮助?我应该学到什么才能做到这一点?

非常感谢:)

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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]视为普通的“字符串”或文件名。

答案 2 :(得分:1)

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