ошибка: неверное преобразование из 'int' в 'const char *' [-fpermissive] с помощью командной строки системы - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь запустить команду netsh с функцией system() в C ++.

Вот мой код:

#include<iostream> // cin / cout
#include<stdlib.h> // system()
using namespace std;

int main(){

    system('netsh interface show interface | findstr /C:"Wi-Fi" /C:"Name"');

}

Я думаю, что мне нужно что-то добавить до 'netsh, чтобы решить эту ошибку, но я не знаю, какой символ, я уже пытаюсь: system(L'netsh interface show interface | findstr /C:"Wi-Fi" /C:"Name"');, но безуспешно,

1 Ответ

2 голосов
/ 28 марта 2020

Вы передаете многосимвольный литерал вместо строкового литерала . Использование одинарных кавычек '...' создает один char, который является типом цифр c, который может быть переведен в int, поэтому вы получаете сообщение об ошибке int, передаваемой в где const char* ожидается. system() ожидает вместо строки C стиля с нулевым символом в конце, ie массив значений char, заканчивающийся символом '\0'. В форме строкового литерала вы вместо двойных кавычек "..." создаете такой массив.

Вам необходимо заменить ' символов на ". И затем вам также нужно экранировать внутренние " символы, используя \, например:

system("netsh interface show interface | findstr /C:\"Wi-Fi\" /C:\"Name\"");

В качестве альтернативы, в C ++ 11 и более поздних версиях вы можете использовать необработанный строковый литерал вместо этого, чтобы избежать экранирования внутренних " символов:

system(R"(netsh interface show interface | findstr /C:"Wi-Fi" /C:"Name")");
...