我可以基于char*而不是文件创建std::ifstream吗?

Can I create an std::ifstream based on a char* rather than a file?

本文关键字:std 文件创建 ifstream char 我可以      更新时间:2023-10-16

我对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类。