我可以在系统()中使用两个字符串吗?
Can i use two strings in system()?
我正在尝试做这样的事情:
{
cout << "command: ";
cin >> m;
cout << "option: ";
cin >> o;
system(m+o);
}
以便用户可以选择要运行的命令和选项(如果需要)
system () 函数需要一个char *
参数,你也忘记了空格分隔。你应该做这样的事情:
system(std::string(m + " " + o).c_str())
无论如何,我强烈建议您不要使用system ()
功能,因为它是一个很大的安全漏洞。
有关这方面的更多详细信息,我建议您阅读以下帖子:
- 为什么在 C 和 C++ 中应该避免使用 system() 函数?
您只能将参数传递给system()
- 一个以空结尾的 C 样式字符串。但是,只要主机系统可以处理该命令,该字符串就可以包含任何复杂程度的命令。
例子:
system("ls");
system("ls -alF");
system("ls -alF | some-other-program ");
假设m
和o
在发布的代码中属于std::string
类型,您可能需要使用:
std::string command = m + " " + o;
system(command.c_str());
相关文章:
- 两个字符串在 c++ 中不相等
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 比较两个字符串后卡在无限循环中
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 使用XOR查找O(n)-解决方案中的两个字符串是否为变位符
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 两个字符串之间的数学运算
- sscanf() 有两个字符串参数
- 我的字符串数组一次打印出前两个字符串
- 两个 c++ 字符串上的异或
- 函数返回两个字符串的第一个常用字符
- 目标是找到两个 c 字符串之间的公共前缀(必须使用特定的函数标头)
- 我需要在C++的两个字符串之间找到共同的前缀
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 给定两个字符串 S 和 T.确定与 T 相差最小的 S 子字符串?
- gtest:检查字符串是否等于两个字符串之一
- 交换两个字符串时访问正确的内存时,我遇到了分段错误
- 我可以在系统()中使用两个字符串吗?