我是C ++的新手,我想知道如何在有一些功能可用的情况下做一个简单的程序。
例如:
mypg.exe function1 string1
mypg.exe function1 textfile1
从str /文件中获取文本并显示或打印。
然后:
mypg.exe function2 string1
mypg.exe function2 textfile1
将文字用于其他事物...... 等等。
任何手册/教程或帮助?我应该学到什么才能做到这一点?
非常感谢:)
答案 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
}