【发布时间】:2012-01-22 11:15:44
【问题描述】:
我对在 Java 和 C++ 和 JNI 之间共享数据感兴趣。目前所有的 C++ 代码都需要一个文件,所以它都是用 std::ifstream 编写的。与其编写文件并再次读取它们,我希望能够只传递一个 char* 并让应用程序从中读取,而不是以某种方式将 char* 视为 ifstream。无论如何要创建一个基于 char* 的 ifstream 吗?
谢谢
【问题讨论】:
我对在 Java 和 C++ 和 JNI 之间共享数据感兴趣。目前所有的 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 类。
【讨论】: