通过read函数将文件中的数据按照一定的长度读取出来并且存放在新的数组中。
函数原型istream& read (char* s, streamsize n); //用来暂存内容的数组(必须是char*型),以及流的长度比如我们要读取txt文件中的内容
先通过文件流将流与txt文件绑定,然后获取文件长度ifstream in("TEST.txt");
然后读取文件in.seekg(0, in.end); //追溯到流的尾部 int length = in.tellg(); //获取流的长度 in.seekg(0, in.beg); //回到流的头部
将流中的内容读取到容器中char* temp = new char[length]; //用来暂存内容的数组 if (in.is_open()) { cout << "Now reading..." << endl; in.read(temp, length); //read函数 }
这里注意,读取时必须标识读入的位置,一般从第一个位置开始读入,即vec[0] 或者string[0]template<typename T> std::vector<T> ReadArray(std::ifstream &in, int size) //size标识vector的大小 { std::vector<T> v(size, 0); in.read((char*)(&v[0]), sizeof(T)*size); return v; }
程序整体如下in.seekg(0, in.beg); //回溯到流头部 vector<char> textVec; textVec = ReadArray<char>(in, length); //读取成功 in.close(); //不要忘了关闭流
#include <iostream> #include <fstream> #include <vector> using namespace std; template<typename T> std::vector<T> ReadArray(std::ifstream &in, int size) //size标识vector的大小 { std::vector<T> v(size, 0); in.read((char*)(&v[0]), sizeof(T)*size); return v; } int main() { ifstream in("TEST.txt"); //获取文件的大小 in.seekg(0, in.end); int length = in.tellg(); in.seekg(0, in.beg); char* temp = new char[length]; if (in.is_open()) { cout << "Now reading..." << endl; in.read(temp, length); } for (int i = 0; i < length; ++i) { cout << temp[i] <<" "; } cout << endl; in.seekg(0, in.beg); vector<char> textVec; textVec = ReadArray<char>(in, length); cout << textVec[1] << endl; in.close(); system("PAUSE"); }