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