从文件中读取文本到无符号字符数组
Posted
技术标签:
【中文标题】从文件中读取文本到无符号字符数组【英文标题】:Reading text from file to unsigned char array 【发布时间】:2011-10-13 10:36:21 【问题描述】:我希望使用 OpenSSL 加密文件中的文本,并且在加密之前需要将文本放在无符号字符数组中。从文件读取文本到无符号字符数组的最简单方法是什么?
【问题讨论】:
【参考方案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<unsigned char*>
。
为什么会不受欢迎?
@HighLife:在 C++ 中,C 类型转换通常被避免并被专门的类型替换。【参考方案3】:
网上一定有很多关于如何做到这一点的例子。唯一棘手的部分是您几乎肯定需要为数组动态分配内存,以确保您读取的输入不会超过数组的容量。此外,如果您需要处理不适合单个字节数组的大 文件(例如,几 GB 或更大),则需要进行更多研究。
【讨论】:
以上是关于从文件中读取文本到无符号字符数组的主要内容,如果未能解决你的问题,请参考以下文章
字符输入流读取文本文件ReaderFileReaderBufferedReader