如何将参数从C++程序传递给cmd?
问题描述:
我试图使用用户的输入被用作将被传递到CMD参数...如何将参数从C++程序传递给cmd?
我知道,使用CMD从我的节目,我需要用这个:
system("SayStatic.exe hello world");
但是这正是我需要的:
char item[100];
gets(item);
//after getting the input I need to pass it to SayStatic.exe that is the part I dont know
我知道我不能使用sysytem();为此,但其他像spawnl()或execl()会工作?
答
首先,千万不要用gets()
。它不应该包含在标准库中,因为比字符串更长的输入会覆盖堆栈内存并导致未定义的行为(可能是某种类型的崩溃)。如果您使用C字符串,则fgets()
是可接受的替代品。
为此,您可以用C++字符串是这样的:
std::string line;
std::getline(std::cin, line);
system(("SayStatic.exe " + line).c_str());
+0
它是否应该被_included_是有争议的 - ANSI的任务是编纂现有的实践,而不是设计一种新的语言,ISO非常重视向后兼容性。无可争辩的是,我们绝不应该使用它:-)无论如何,+1来解决问题,特别是不使用'sprintf'等人。 – paxdiablo 2012-02-25 07:37:11
为什么你就不能使用'系统()'? – 2012-02-25 06:24:54
我需要的参数是一个变量 – user1232148 2012-02-25 06:27:03
不要使用'gets'来输入,这是一个巨大的漏洞,很容易用于缓冲区溢出。无论如何,C++程序员应该使用'iostream'东西,而不是'cstdio'东西。 – paxdiablo 2012-02-25 07:33:57