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

0

Я использую довольно простой код 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;
}

Благодарю.

Теги:
file
scripting
ifstream

1 ответ

2
Лучший ответ

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

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

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

  • 0
    f самом деле представляет собой std::string который был аргументом функции с моим кодом slurp. Я все еще получаю ошибку с помощью c_str() .
  • 0
    Вы все еще получаете ту же ошибку, которую отправили?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню