如何使用system()函数和用户输入c ++

时间:2015-04-14 23:39:46

标签: c++ console ping

对不起另一个误导性的标题,发现很难描述它是什么。我试图让用户能够在控制台中键入内容并将其添加到system()命令的末尾。例如:

cout << "Input an ip in the form of xx(x).xx(x).xx(x).xx(x)" << endl;
cin >> ipstring;
system("ping");  

然后在ping之后使用ipstring,以便用户可以键入他们想要ping的内容。在java中我认为它会是这样的:

system( "ping" + ipstring )

3 个答案:

答案 0 :(得分:1)

system()期望输入char*

假设ipstringstd::string,您可以这样做:

system( ("ping " + ipstring).c_str() );

如果没有,你可以使用更像这样的东西:

std::ostringstream oss;
oss << "ping " << ipstring;
system( oss.str().c_str() );

话虽如此,你真的不应该使用system()。正如其他人所说,它是一种注射攻击向量。您应该使用本机API执行ping操作(如果可用),例如Windows上的IcmpSendEcho()。或者是第三方图书馆。

答案 1 :(得分:0)

在C ++中,假设ipstringstd::string,它几​​乎完全相同:

system(("ping"+ipstring).c_str());

如果ipstringconst char*,那么您应首先将ping转换为std::string

system((std::string("ping")+ipstring).c_str());

答案 2 :(得分:0)

你可以使用&#39; sprintf&#39;,就像这样

char to_send[1000];
sprintf(to_send,"ping %s" , ipstring.c_str());
system(to_send)

假设你的ipstring&#39;是一个std :: string。