我想将每个字节放入一个字符数组中,并重写该文本文件以除去前100,000个字符。打开超过5 MB的文件并将它们存储在一个数组中
int fs=0;
ifstream nm,nm1;
nm1.open("C:\\Dev-Cpp\\DCS\\Decom\\a.txt");
if(nm1.is_open())
{
nm1.seekg(0, ios::end);
fs = nm1.tellg();
}
nm1.close();
char ss[500000];
nm.open("C:\\Dev-Cpp\\DCS\\Decom\\a.txt");
nm.read(ss,fs-1);
nm.close();
ofstream om;
om.open("C:\\Dev-Cpp\\DCS\\Decom\\a.txt");
for(int i=100000;i<fs-1;i++){
om >> ss[i];
}
om.close();
问题是我无法将字符数组设置为500万大小。我试着用向量也
vector <char> ss (5000000);
int w=0;
ifstream in2("C:\\Dev-Cpp\\DCS\\Decom\\a.txt", ios::binary);
unsigned char c2;
while(in2.read((char *)&c2, 1))
{
in2 >> ss[w];
w++;
}
在这里W的大小几乎是FS的一半,和很多人物的缺失。
怎么办?
谢谢,我用过char * ss = new char [5000000];如你所建议并删除[] ss;在程序结束时,它现在工作正常,但我没有堆和堆栈的经验,不知道在哪里放置size_t代码(在fstream里面?) – 2012-01-14 12:13:08
@GambitKing最初你只需要粗略理解[堆vs 。stack](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap),你可以从五分钟的阅读中获得。我错了'size_t actualSize' - 请参阅我的编辑。 – dasblinkenlight 2012-01-14 12:24:03
感谢您的信息 – 2012-01-14 12:30:31