C++ System выполнение команд с аргументами?



@MrZed

Привет! Пишу программу(если так можно сказать) компилятор на C++.
КОД:

#include <iostream>
#include <string>

using namespace std;

int main () {
	string test = "test.cpp";
	string command = "cl /EHsc " + test;

	system(command);
	return 0;
}

Получаю ошибку:

main.cpp(10): error C2664: "int system(const char *)": невозможно преобразовать аргумент 1 из "std::basic_string<char,std::char_traits<char>,std::allocator<char>>" в "const char *"
C:UsersUserDesktopmain.cpp(10): note: Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен

Простите если тупой вопрос, я только 2 день учу C++.


Решения вопроса 1



@0hquazEd

Проблема в том, что ты пытаешься конкатенировать const char* с std::string. Так же в функцию, принимающую const char* ты кладёшь строку из std. Тебе нужно вызвать c_str у std::string для получения C-style строки

int main(int argc, char** argv)
{
	std::string test = "test.cpp";
	std::string command = "cl /EHsc " + test;
	
	std::string result = test + command;

	system(result.c_str());
	return 0;
}

Комментировать

Ответы на вопрос 0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *