我试图读取一个简单的文本文件,将其内容返回为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*
。
谢谢!
答案 0 :(得分:0)
返回一个std :: string。问题解决了。