【问题标题】:Reading text from file to unsigned char array从文件中读取文本到无符号字符数组
【发布时间】:2011-10-13 10:36:21
【问题描述】:

我希望使用 OpenSSL 加密文件中的文本,并且在加密之前需要将文本放在无符号字符数组中。从文件读取文本到无符号字符数组的最简单方法是什么?

【问题讨论】:

    标签: c++ arrays file char


    【解决方案1】:

    您的问题被标记为 C 和 C++ (不具建设性)。我会给 C++ 一个答案。

    #include <fstream>
    #include <iterator>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
        ifstream in("filename.txt"); //open file
        in >> noskipws;  //we don't want to skip spaces        
        //initialize a vector with a pair of istream_iterators
        vector<unsigned char> v((istream_iterator<unsigned char>(in)), 
                                (istream_iterator<unsigned char>()));
        ...
    }
    

    【讨论】:

    • @它有什么邪恶之处? :)
    • 我现在正在查找 vector(istream_iterator,istream_iterator) 的文档。就是这么简单
    • 我读到你的答案是这样的:“你的问题被标记为 C 和 C++。(你可能只指 C。)我会给出 C++ 的答案。” ;-)
    • @Amigable:原来他的意思是 C++,因为他编辑了问题 :)
    • 这就是我喜欢 stackoverlow 的原因。每次我都能找到更好的方法来做简单的事情。
    【解决方案2】:

    以您喜欢的任何数据类型阅读它。转换为 (unsigned char*) 保证让您可以访问各个字节。

    编辑:这是针对 C 而不是 C++ 的答案。最初这个问题也被标记为 C。

    【讨论】:

    • 为什么不能在 C++ 中使用这个答案?
    • @HighLife,也许你可以,但它会被不赞成。您应该明确并使用reinterpret_cast&lt;unsigned char*&gt;
    • 为什么会不受欢迎?
    • @HighLife:在 C++ 中,C 类型转换通常被避免并被专门的类型替换。
    【解决方案3】:

    网上一定有很多关于如何做到这一点的例子。唯一棘手的部分是您几乎肯定需要为数组动态分配内存,以确保您读取的输入不会超过数组的容量。此外,如果您需要处理不适合单个字节数组的 文件(例如,几 GB 或更大),则需要进行更多研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 2013-02-22
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多