използване на низова променлива за ping и запазване на файл в C++

system( "ping www.google.com  >  pingresult.txt") 

От този код може ли низът "ping www.google.com" да бъде взет от променлива std::string? Например:

string ipAddress;

cout << "Enter the ip address: ";
cin >> ipAddress;

string ip = "ping" + ipAddress;
**system ("ip > pingresult.txt");** //error here
sytem("exit");

person Zihaan    schedule 18.01.2017    source източник
comment
Каква е грешката?   -  person edtheprogrammerguy    schedule 18.01.2017


Отговори (2)


ip не е командна обвивка. Предполагам, че сте мислили, че низът "ip" в извикването system ще бъде имплицитно заменен с низа ip във вашата програма; не става така.

Можете да поставите целия команден низ в ip, след което да използвате метода .c_str(), за да преобразувате низа в const char * масива, който system очаква:

ip += " > pingresult.txt";
system(ip.c_str());
person Govind Parmar    schedule 18.01.2017

Първо трябва да изградите пълната команда в std::string и след това да я предадете като const char * на функцията system:

string ipAddress;

cout << "Enter the ip address: ";
cin >> ipAddress;

string cmd = "ping " + ipAddress + " > pingresult.txt";
system (cmd.c_str()); // pass a const char *
//system("exit"); this is a no-op spawning a new shell to only execute exit...
person Serge Ballesta    schedule 18.01.2017
comment
Е, сега разбрах, много ви благодаря! - person Zihaan; 18.01.2017