использование строковой переменной для проверки связи и сохранения файла на С++

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