[转]C++按行读取文本文件

本文转自:http://blog.csdn.net/syunqiang/article/details/6425302

 

很多初学C++的同学,对于读取文本文件,并按照行处理数据总是有点不知如何开始,作为C++的初学者,自己在这里做一点笔记。

其实利用C++按行读取文本文件其实很简单。假设有一个文本文件,如下所示:

 

1 2 3
2 3 4
3 4 5
5 6 7
7 8 9

文件名为split.txt

 

目的:按照行读取数据,并一个个的显示出来。

 

代码如下:

 

 

  1. #include <iostream>
  2. #include <sstream>
  3. #include <fstream>
  4. #include <string>
  5. int main(int args, char **argv)
  6. {
  7. std::ifstream fin("split.txt", std::ios::in);
  8. char line[1024]={0};
  9. std::string x = "";
  10. std::string y = "";
  11. std::string z = "";
  12. while(fin.getline(line, sizeof(line)))
  13. {
  14. std::stringstream word(line);
  15. word >> x;
  16. word >> y;
  17. word >> z;
  18. std::cout << "x: " << x << std::endl;
  19. std::cout << "y: " << y << std::endl;
  20. std::cout << "z: " << z << std::endl;
  21. }
  22. fin.clear();
  23. fin.close();
  24. return 0;
  25. }

 

下面一行一行解读代码:

首先说明一下头文件,头文件中<iostream>, <string>的作用就不用说了,<fstream>是定义文件的需要的头文件,而<sstream>是字符串流stringstream所需要的头文件。

第8行: std::ifstream fin("split.txt", std::ios::in); 定义读取的文本文件。

第9行: char line[1024] = {0}; 用于定义读取一行的文本的变量。

第10--12行,定义了 x y z 三个字符串变量,用于存放读取一行数据后,分别存放每行的三个数据。

第13--22行,用一个循环读取每行数据,读取行的函数是getline()函数,然后利用stringstream将每行文本自动按照空格分列,并分别存放到对应的三个字符串变量中。

23、24行代码,就是刷新缓存,并关闭文件。

 

运行的结果如下所示:

 

posted on 2012-06-18 23:44 freeliver54 阅读(...) 评论(...) 编辑 收藏

导航

公告