我正在linux.I上编写一个简单的shell程序,我在shell中实现了用户给出的许多命令。但我不知道如何发出命令来编写这个command.what,我的意思是当用户发出一个简单的命令,即ls or date,我只是在shell systtem("ls")中编写。我将字符串(由用户提供)的值与ls进行了比较,如果为true,则实现它。例如
string s;
cin>>s;
if(s=="ls")
system("ls");现在,如果用户说cp file1.cpp file2.cpp,那我该怎么办?提前谢谢。
发布于 2015-12-14 19:43:43
system()只是一个接受const char*参数的函数。您不必将它传递给文字,任何char* (以nul结尾的c-样式字符串)都可以。
如果只想将一行用户输入传递给shell,只需将其读入string,然后使用string::c_str()将其传递给system()。
std::string input;
std::getline(std::cin, input);
system(input.c_str());发布于 2015-12-14 19:39:21
我不确定这是否是你想要的,但你可以使用sprintf。
int sprintf ( char * str, const char * format, ... );所以基本上在你的情况下:
string f1,f2;
cin >> s >> f1 >> f2;
if(s=="cp")
{
sprintf(ret,"cp %s %s",f1,f2);
system(ret);
}当然,在进行sprintf之前,您可以将您想要的验证放入其中。
https://stackoverflow.com/questions/34275038
复制相似问题