【问题标题】:Can I create an std::ifstream based on a char* rather than a file?我可以基于 char* 而不是文件创建 std::ifstream 吗?
【发布时间】:2012-01-22 11:15:44
【问题描述】:

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

谢谢

【问题讨论】:

    标签: c++ java-native-interface


    【解决方案1】:

    是的,它叫做std::istringstream。你可以这样使用它:

    #include<sstream>
    
    ....
    
    char const* s = "whatever";
    
    std::istringstream iss(std::string(s));
    
    int i;
    
    iss >> i;
    
    ....
    

    如果您的代码需要一个std::ifstream 具体,您可以将其更改为需要一个通用的std::istream,正如 Adrian 所提到的,两者都继承自它。

    【讨论】:

    • 所以 LOL 和 LOL 和 LOl 哦,现在超过 15 个字符
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 2016-03-15
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多