Переменные в кавычках Переполнение стека

Позвольте мне начать с того, что я не смог найти идентичный вопрос, но мои ключевые слова для поиска были довольно общими, и поэтому, если вам известна ветка, которая отвечает на мой вопрос, укажите мне, и я закрою эту ветку.

Я переписываю свой bash-скрипт на c ++, чтобы помочь мне лучше понять язык. Проблема, с которой я сталкиваюсь, заключается в следующем:

string input = "/wam/wxx.cpp";
string output = "/wam/wxx.exe";
system ("/MinGW/bin/g++.exe input  -o output");

(Это лишь небольшая иллюстрация; в моем реальном коде переменные вводятся пользователем)

Очевидно, что я передаю слова «ввод» и «вывод» моему компилятору вместо переменных этих имен. я пытался

system ("/MinGW/bin/g++.exe" input  "-o" output);

а также другие комбинации цитирования / не цитирования, ни одна из которых тоже не работает. Системной команде нужны кавычки, так есть ли способ правильно распознать мои переменные в этих кавычках? (В настоящее время я сохраняю эти переменные в текстовом файле, а затем загружаю их в сценарий bash, который запускает компилятор, что лишает меня смысла писать это на c ++ для начала.)

Заранее спасибо!

РЕДАКТИРОВАТЬ: чтобы уточнить, я

using namespace std

0

Решение

Так как они (предположительно) std::stringВы можете просто вставить их вместе с +, как это:

std::string cmd = "/MinGW/bin/g++.exe";

std::string fullcmd = cmd + " " + input + " -o " + output;
system(fullcmd.c_str());

Тебе нужно fullcmd.c_str() поскольку system принимает строку стиля C, а не строку стиля C ++.

0

Другие решения

Это должно помочь:

string input = "/wam/wxx.cpp";
string output = "/wam/wxx.exe";
string command = "/MingW/bin/g++.exe "command += input;
command += " -o "command += output;
system(command.c_str());

Тебе нужно std::string::c_str() преобразовать строки в char массивы, и вы не можете добавить std::string к строковому литералу, однако, вы можете добавить литерал к std::stringили std::string для std::string,

0

По вопросам рекламы [email protected]