将文本文件读取为 const char* 有时有效,有时无效

Reading a text file as const char* sometimes work and sometimes don't

本文关键字:有效 无效 char 文件 文本 读取 const      更新时间:2023-10-16

我正在尝试读取一个简单的文本文件,将其内容返回为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* .

谢谢!

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

相关文章: