2015-09-30 2 views
-2

Как передать переменную командной строки, хотя команда system() в C++. Я попытался с помощью:Передача аргументов через system() в C++

string i; 
i = system("./findName.sh"); 
i += argv[1]; 
cout << i; 

Но когда я запускаю это дает мне мое условие неверное число аргументов, которые я написал в моем сценарии оболочки.

Это результат, который я получил при запуске моей программы с помощью «./findName brandonw». Какой мой исполняемый файл запускался с аргументом, с которым я хочу работать со сценарием оболочки.

The arguments you put are: 
brandonw 
usage: findName.sh [only_one_argument] 
+1

Для начала вы пытаетесь добавить его к выходу, а не к входу. И 'system' не возвращает строку' std :: string'. Вам нужно привыкнуть к консультациям с некоторыми документами. –

+0

http://en.cppreference.com/w/cpp/utility/program/system –

ответ

0

Просто переставить ваш код немного:

string i("./findName.sh "); 
i += argv[1]; 
system(i.c_str()); 
cout << i; 

Также обратите внимание, что system не возвращает std::string, но реализация определяется int значение.

Если вам нужно иметь дело с выводом ./findName.sh, вам нужно всего pipe().

1

Просто соедините его с командной строкой.

string command = "./findName.sh"; 
command = command + " " + argv[1]; 
system(command.c_str()); 
Смежные вопросы