将文本文件作为常量字符*读取有时可以工作,有时候也不会

时间:2018-03-23 04:57:07

标签: c++ file

我试图读取一个简单的文本文件,将其内容返回为const char *。

问题是函数返回的类型。当我将文件的内容返回为std::string时,我没有遇到任何问题,外部字符串变量将始终保留文件内容,但当我尝试将内容返回为const char*时,有时会返回变量保存文件内容,有时候不要。我尝试处理这种方式的方式根本不安全。我该如何解决?

static const char* readFile(const char* filePath)
{
    std::ifstream file(filePath);

    if (file.is_open())
    {
        std::string line;
        std::stringstream ss;

        //while(getline(file, line))[...] will result in the same issue.
        ss << file.rdbuf();

        file.close();

        std::string value = ss.str();
        return const_cast<char *>(value.c_str());
    }

    return nullptr;
}

1 - 在我返回的字符串中有文件内容时,将函数签名更改为std :: string;

2 - 即使返回的变量保持为const char*且字符串强制转换为:ss.str().c_str();&(ss.str())[0];也无法保证数据将作为const char*传递

我知道我仍然可以使用std :: string并稍后将结果转换为char,但我仍然想知道如何将文件内容转换为const char*

谢谢!

1 个答案:

答案 0 :(得分:0)

返回一个std :: string。问题解决了。