错误:无法在简单的std :: string文件中转换slurper

时间:2013-11-02 17:02:05

标签: c++ file scripting ifstream sstream

我使用一些相当简单的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;
}

感谢。

1 个答案:

答案 0 :(得分:2)

除非您想要动态分配,否则不要在C ++中使用new创建对象。 new返回一个指针。这应该有用。

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

std::ifstream的构造函数需要const char *,因此您需要使用std::string::c_str()