Позвольте мне начать с того, что я не смог найти идентичный вопрос, но мои ключевые слова для поиска были довольно общими, и поэтому, если вам известна ветка, которая отвечает на мой вопрос, укажите мне, и я закрою эту ветку.
Я переписываю свой 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
Так как они (предположительно) 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 ++.
Это должно помочь:
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
,