Я использую довольно простой код 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()
f
самом деле представляет собойstd::string
который был аргументом функции с моим кодом slurp. Я все еще получаю ошибку с помощьюc_str()
.