Ошибка: невозможно преобразовать в простой файл std :: string slurper

Я использую довольно простой код C ++, чтобы вылить содержимое файла в std::string:

// Read contents of file given to a std::string.
std::string f = "main.js";
std::ifstream ifs(f.c_str());
std::stringstream sstr;
sstr << ifs.rdbuf();
std::string code = sstr.str();

Но когда я компилирую, я получаю эту ошибку:

error: could not convert ‘((*(const std::allocator<char>*)(& std::allocator<char>())),
(operator new(4u), (<statement>, ((std::string*)<anonymous>))))’ from ‘std::string*
{aka std::basic_string<char>*}’ to ‘std::string {aka std::basic_string<char>}’

Я знаю, что это, вероятно, простая ошибка, но я все еще очень много изучаю C ++. Должно быть просто смешивание типов или что-то в этом роде.

По запросу, вот пример кода того, что я пытаюсь сделать:

std::string Slurp(std::string f)
{
std::ifstream ifs(f.c_str());
std::stringstream sstr;
sstr << ifs.rdbuf();
std::string code = sstr.str();
return code;
}

Благодарю.

0

Решение

Вы не создаете объекты, используя new в C ++, если вы не хотите динамическое размещение. new возвращает указатель Это должно работать.

std::string f("main.js");
std::ifstream ifs(f.c_str());

Конструктор std::ifstream ожидает const char * так что вам нужно использовать std::string::c_str()

2

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

Других решений пока нет …

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