使用 (cin) 用户输入将其粘贴到 std::system 并在另一个终端中使用输入运行命令

Posted

技术标签:

【中文标题】使用 (cin) 用户输入将其粘贴到 std::system 并在另一个终端中使用输入运行命令【英文标题】:Use the (cin) user input to paste it in std::system and run a command with the input in another terminal 【发布时间】:2018-08-20 10:19:33 【问题描述】:

int main() 
    string ip;
    cout << "IP to scan: ";
    cin >> ip;

    std::system(" nmap .... ")

    return 0;

所以基本上我希望在 gnome 终端中使用字符串 ip,这样我就可以对用户输入的 ip 进行 nmap 扫描

【问题讨论】:

不清楚是什么问题。当你做你想做的事时会发生什么?不行吗? 用另一个终端的输入运行命令然后你必须在system()中调用gterm。您可以提供命令 nmap 作为命令行参数,例如system("gterm -e \"nmap .... \"");system("gterm -x nmap .... ")。在文档中找到这个:gnome-terminal - Options 【参考方案1】:

这可以使用字符串格式轻松完成:

int main() // ; << Note this is wrong!

    string ip;
    cout << "IP to scan: ";
    cin >> ip;

    std::ostringstream os;
    os << "nmap " << ip;

    std::system(os.str().c_str());

    // return 0; isn't necessary    


要在不同的终端窗口中运行该命令,您必须使用 system() 调用终端程序,正如 scheff 在他们的评论中提到的那样

os << "gterm -e \"nmap " << ip "\"";
std::system(os.str().c_str());

【讨论】:

stu.cpp:在函数'int main()'中:stu.cpp:11:24:错误:聚合'std::ostringstream os'的类型不完整,无法定义std::ostringstream操作系统; ^~ @TheUnknownGuy 缺少一些包含:#include &lt;iostream&gt;#include &lt;sstream&gt;#include &lt;string&gt; @TheUnknownGuy 使用#include &lt;sstream&gt;。如有更多问题,请参阅documentation。 @TheUnknownGuy ...您可能必须在main() 之前插入using namespace std; @TheUnknownGuy 我看不出多输入有何不同。只需使用循环等。

以上是关于使用 (cin) 用户输入将其粘贴到 std::system 并在另一个终端中使用输入运行命令的主要内容,如果未能解决你的问题,请参考以下文章

html Squarespace:这是一种黑客,可以在每页的基础上隐藏产品块中的“数量”输入字段。将其粘贴到某处的代码块中

使用“cin”的用户输入验证

如何在 C++ 中使用 cin 将所有空格读入字符串?

将用户输入数字转换为整数向量(C ++)

如何粘贴到终端?

在while循环中输入Cin