ifstream的read函数使用中的问题。

dubuyunjie 2011-10-15 12:08:17

#include <iostream>
#include <fstream>
#include <vector>
#include <ctime>
using namespace std;

int main()
{
srand(time(0));
vector<int> v;
for (int i=0;i<100;i++)
{
v.push_back(i);
// v.push_back(i*(rand()%10));
}
ofstream out("write.txt",ios::trunc);
cout<<"待写入:"<<endl;
for (i=0;i<v.size();i++)
{
out.write((const char *)&v[i],sizeof(int));
cout<<v[i]<<' ';
}
cout<<endl;

out.close();
ifstream inf("write.txt");
vector<int> vs;
vector<int> vm(1);
cout<<"读出 :"<<endl;
while(1)
{

if(inf.read((char *)&vm[0],sizeof(int)))
{
vs.push_back(vm[0]);
cout<<vm[0]<<' ';
vm.clear();
}
else break;

}
cout<<endl;
cout<<"内存 :"<<endl;
for (vector<int>::iterator it=vs.begin();it!=vs.end();it++)
{
cout<<*it<<" ";
}
inf.close();
return 0;
}

***********************
v.push_back(i);
//v.push_back(i*(rand()%10));
第一个初始化只能读到25,应该是可以读100个的。
第二个是随机的,有时读取到一半就读不了了。有时可以读完
请问这是怎么回事呢。。
...全文
347 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dubuyunjie 2011-10-15
  • 打赏
  • 举报
回复
太3Q了。
柯本 2011-10-15
  • 打赏
  • 举报
回复
你文件名虽然是.txt,实际上是二进制文件
所以要:

ofstream out("write.txt",ios::trunc )

ofstream out("write.txt",ios::trunc | ios::binary);

ifstream inf("write.txt");

ifstream inf("write.txt",ios::binary);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧