Как передать аргумент командной строки из файла cpp и использовать его в сценарии оболочки? - PullRequest
0 голосов
/ 23 апреля 2020

Итак, мне нужно создать файл cpp, который использует мой скрипт для поиска чьего-либо имени. Я довольно новичок в этом, поэтому я не знаю много, но это то, что у меня есть в настоящее время. Также я должен использовать system (). Вот мой код

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

int main (int argc, char *argv[]) {
    system("./findName.sh" + argv[1] );
    return 0;
}

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Проблема в том, что в C ++ строковые литералы (такие как "./findName.sh") не std::string, а указатели. Для указателей добавление имеет другое значение, чем конкатенация строк.

Вы можете создать std::string и использовать его для выполнения конкатенации:

    std::string scriptName = "./findName.sh";
    std::string command = scriptName + " " + argv[1];

    system(command.c_str());

Не забудьте проверить размер argc чтобы убедиться, что есть аргумент.

0 голосов
/ 23 апреля 2020

Вы можете использовать std::system или boost::process для этих целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...