将文本文件读取为 const char* 有时有效,有时无效
Reading a text file as const char* sometimes work and sometimes don't
我正在尝试读取一个简单的文本文件,将其内容返回为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。 问题解决了。
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 枚举进程模块在有效句柄上返回无效句柄
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- C++14 : 2 个随机生成器 - 一个有效,另一个无效
- 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?
- 为什么构造函数的虚拟函数调用有时有效,但其他调用却无效
- 类外的前向声明有效,但在嵌套时无效
- 为什么第二个代码有效而第一个代码无效?
- 将文本文件读取为 const char* 有时有效,有时无效
- reinterpret_cast可以将无效的指针值转换为有效的指针值
- 为什么C++隐式转换有效,而显式转换无效?
- (C++)比较两段代码,一段有效,一段无效,无法找出区别
- 如何说一个有效或无效,即使一个是,另一个不是
- 正则表达式有效和无效的切换
- 将流定义为私有类变量似乎在Linux下有效,但在WindowsVisualStudio下无效
- 验证用户输入是否有效 [从 'char' 到 'char*' 的转换无效]
- 在C++中嵌入Python:在Python脚本中导入模块在一个函数调用过程中有效,但在另一个调用过程中无效
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 为什么这个取消注释的宏在 clang 中无效,但在 msvc 中有效
- Tensorflow模型在Python中有效,但在C++中无效