Я использую довольно простой код 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;
}
Благодарю.
Вы не создаете объекты, используя new
в C ++, если вы не хотите динамическое размещение. new
возвращает указатель Это должно работать.
std::string f("main.js");
std::ifstream ifs(f.c_str());
Конструктор std::ifstream
ожидает const char *
так что вам нужно использовать std::string::c_str()
Других решений пока нет …