对不起另一个误导性的标题,发现很难描述它是什么。我试图让用户能够在控制台中键入内容并将其添加到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 )
答案 0 :(得分:1)
system()
期望输入char*
。
假设ipstring
是std::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 ++中,假设ipstring
是std::string
,它几乎完全相同:
system(("ping"+ipstring).c_str());
如果ipstring
是const 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。