• 全部
...

【文件读入】c++ ifstream read函数怎么读入文件中的整数?

一葉孤星坠空城丶 2015-10-17 09:12:50

  1. #include <iostream>
  2. #include <fstream>
  3. #include <ctime>
  4. using namespace std;


  5. const int DATA_NUM = 100; // 文件中数据量
  6. const int BUFFER_SIZE = 15; // 缓冲区大小
  7. int g_inputBuffer[BUFFER_SIZE]; // 输入缓冲区
  8. int g_ouputBuffer[BUFFER_SIZE]; // 输出缓冲区



  9. void createData()
  10. {
  11. ofstream file_out("data");

  12. srand((unsigned)time(0));
  13. // 生成DATA_NUM个1000以内的随机整数写入文件中
  14. for(int i = 1; i <= DATA_NUM; i++)
  15. {
  16. int data = rand() % 1000;
  17. file_out << data << endl;
  18. }
  19. file_out.close();
  20. }

  21. void readData()
  22. {
  23. ifstream file_in("data",ios::binary);
  24. while(!file_in.eof())
  25. {
  26. file_in.read((char*)g_inputBuffer, sizeof(int) * BUFFER_SIZE); // 用二进制方式读入文件,读入的大小是整个缓冲区的大小
  27. int count = file_in.gcount(); // 读入的字节数?
  28. cout << "读入的数量 : " << count << endl;

  29. for (int i = 0 ; i < count ; i++)
  30. cout << g_inputBuffer[i] << " ";
  31. cout << endl;
  32. }
  33. file_in.close();
  34. }

  35. int main()
  36. {

  37. createData();
  38. readData();
  39. return 0;

  40. }


输出的整数根本错乱了,请问怎样才能正确实现我想要的功能?
...全文
给本帖投票
781 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢提醒。我用write写入再读出,结果就正确了。

void createData()
{
	ofstream file_out("data");

	srand((unsigned)time(0));
	cout << "随机数 : ";
	for(int i = 1; i <= DATA_NUM; i++)
	{
		int data = rand() % 1000;
		cout << data << " ";
		file_out.write((char*)(&data),sizeof(int));
	}
	cout << endl;
	file_out.close();
}

void readData()
{
	ifstream file_in("data",ios::binary);
	while(!file_in.eof())
	{
		file_in.read((char*)g_inputBuffer, sizeof(int) * BUFFER_SIZE);
		int count = file_in.gcount() / sizeof(int);
		cout << "读入的数量 : " << count << endl;


		for (int i = 0 ; i < count ; i++)
			cout << g_inputBuffer[i] << " ";
		cout << endl;
	}
	file_in.close();
}
fefe82 2015-10-17
  • 打赏
  • 举报
回复
read write 是二进制读写 << >> 是格式化读写 有关 << 写 read 读当然错乱了。 写的时候用 write 吧。

65,180

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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

手机看
关注公众号

关注公众号

客服 返回
顶部