我可以基于char*而不是文件创建std::ifstream吗?
Can I create an std::ifstream based on a char* rather than a file?
我对Java和c++之间的数据共享很感兴趣。目前所有的c++代码都需要一个文件,所以都是用std::ifstream来写的。而不是写文件并再次读取它们,我希望能够只是传递一个char*,并让应用程序从中读取,而不是以某种方式将char*视为ifstream。有没有办法创建一个基于char*的ifstream ?
谢谢
是的,它叫做std::istringstream
。你可以这样使用:
#include<sstream>
....
char const* s = "whatever";
std::istringstream iss(std::string(s));
int i;
iss >> i;
....
如果您的代码期望std::ifstream
特别,您可以将其更改为期望通用的std::istream
,两者都继承,如Adrian所述。
考虑过使用字符串流吗-它们通常表现得像文件。你的代码真的需要ifstream而不是istream吗?如果它是用istream编写的,你可以直接添加stringstream/istringstream类。
相关文章:
- 终端不会为C++文件创建.exe文件吗
- 使用std::list创建循环链表
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- 如何使用 std::make_shared 创建基类类型的智能指针?
- 如何从具有两列的.txt文件创建并行数组?
- 从 .lib 文件创建一个.dll文件
- 从std::字符串创建OssBitString
- 如何从输入文件 c++ 创建随机名称生成器
- 是否可以从 std::any 创建 std::any 与 std::reference_wrapper?
- 无法从 cso 文件创建顶点着色器(从 fx 文件创建)
- 如何为多个目录中的多个文件创建生成文件?
- 在编译时从 c++ 文件创建枚举
- 是否可以为 std::cout 创建别名?
- ZeroMQ 在使用 std::thread 创建工作线程时崩溃
- C++从 std::string 创建 CString 失败
- 是否可以使用 std::文件系统获取根名称列表?
- llvm 9在10.15之前的mac版本上支持std::文件系统吗
- 在C++中使用std::ofstream创建具有随机文件名的文件时出现问题
- 我可以基于char*而不是文件创建std::ifstream吗?