文本文件中的行尾 - C ++

时间:2015-12-09 14:18:53

标签: c++ file fstream

我不知道如何实施此算法

//你有一个像

这样的文本文件
12 3
3
4 4
  1. 如果该行只包含一个数字则跳过它 否则
  2. 读取第一个数字,然后读取第二个数字并做一些工作
  3. 那么,我怎么知道这条线已经结束了? 我需要将数据处理为整数而不是字符串

3 个答案:

答案 0 :(得分:0)

一行的结尾由字符'\n'表示。

因此,当您阅读文件时,您必须查找'\n'字符,然后您才能找到属于哪一行的内容。

<强> PROCESS

  1. 从文件中提取第一个样本
  2. 将其放入缓冲区
  3. '\n'字符
  4. 上拆分缓冲区
  5. 分析每一行只保留2号
  6. 的行

答案 1 :(得分:0)

请参阅cppreference

等教程

从上面的教程:

 string line;
  ifstream myfile ("example.txt");
  if (myfile.is_open())
  {
    while ( getline (myfile,line) )
    {
      cout << line << '\n';
    }
    myfile.close();
  }

快速解释:&#39; getline&#39;返回true,直到未到达文件末尾。

答案 2 :(得分:0)

运行此程序,看看发生了什么。它应该非常直接。

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <vector>

using namespace std;

int main()
{

     ifstream ifs;
     ifs.open("input.txt");

     string line;

     while (getline(ifs, line))
     {

        cout<<"whole line is: "<<line<<endl;
         //can seperate input:
         istringstream is(line);
         int numberOnLine;

         is>>numberOnLine;
         vector<int> myvec;

         while(is)
         {
             myvec.push_back(numberOnLine);
             is>>numberOnLine;
         }

         if(myvec.size()<2)
         {
             cout<<"this line had less than 2 numbers ";
         }
         else{
            cout<<"the line had at least 2 numbers, here they are: ";
            for(int i=0; i<myvec.size(); ++i) cout<<myvec.at(i)<<" ";
         }
         cout<<endl;
     }

}