如何将参数从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()会工作?

+0

为什么你就不能使用'系统()'? – 2012-02-25 06:24:54

+0

我需要的参数是一个变量 – user1232148 2012-02-25 06:27:03

+0

不要使用'gets'来输入,这是一个巨大的漏洞,很容易用于缓冲区溢出。无论如何,C++程序员应该使用'iostream'东西,而不是'cstdio'东西。 – paxdiablo 2012-02-25 07:33:57

首先,千万不要用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