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

时间:2011-12-17 03:58:43

标签: c++ java-native-interface

我有兴趣在Java和C ++之间共享数据,所以JNI。目前所有C ++代码都需要一个文件,所以它都是用std :: ifstream编写的。而不是编写文件并再次读取它们,我希望能够只传递一个char *并从中读取应用程序,而不是以某种方式将char *视为ifstream。反正有没有创建一个基于char *的ifstream?

由于

2 个答案:

答案 0 :(得分:5)

是的,它被称为std::istringstream。您可以像这样使用它:

#include<sstream>

....

char const* s = "whatever";

std::istringstream iss(std::string(s));

int i;

iss >> i;

....

如果您的代码需要std::ifstream 专门,您可以将其更改为期望通用std::istream,两者都继承,如Adrian所述。

答案 1 :(得分:2)

考虑使用字符串流 - 它们通常表现得像文件一样。你的代码真的想要一个ifstream而不是一个istream。如果它是用istream编写的,你可以放入stringstream / istringstream类。