使用“>>”后如何将光标移动到下一行操作员从文件中读取

时间:2015-04-14 20:38:04

标签: c++ string ifstream getline stringstream

我正在尝试从.txt文件中读取信息,如下所示。要读取前两行整数,我使用“>>”运算符将它们读入数组。我的问题是我想读取下一行(完整的)到一个字符串,所以我可以将它转换为流并解析它,但是当我尝试简单地使用getline它实际上没有读取任何东西到字符串中让我觉得光标实际上没有移动到下一行,我想知道如何做这个或任何其他方法,以达到保存的目的。 txt文件的结构如下:

2

10 10 10 10 10 10 20 20 20 15 15 15 15 15 15 15 20 30 20 15 15 10 10 10
765DEF 01:01:05:59 enter 17
ABC123 01:01:06:01 enter 17
765DEF 01:01:07:00 exit 95
ABC123 01:01:08:03 exit 95

我的代码如下所示:

#include<iostream>
#include<fstream>
#include<string>
#include <sstream>
using namespace std;



int main()
{
    int arr[24];
    int milemarker;
    int numberofCases;


    ifstream File;
    File.open("input.txt");
    File >> numberofCases;

    for (int i = 0; i < 24; i++)
    {
        File >> arr[i];
    }

    for (int i = 0; i < 24; i++)
    { 
        cout << arr[i] << " ";
    }
    cout << endl;
    string line;
    getline(File, line);
    cout << line;


    system("pause");
}

1 个答案:

答案 0 :(得分:2)

我想你错过getline()来电:

#include<iostream>
#include<fstream>
#include<string>
#include <sstream>
using namespace std;



int main()
{
    int arr[24];
    int milemarker;
    int numberofCases;


    ifstream File;
    File.open("input.txt");
    File >> numberofCases;

    for (int i = 0; i < 24; i++)
    {
        File >> arr[i];
    }

    for (int i = 0; i < 24; i++)
    { 
        cout << arr[i] << " ";
    }
    cout << endl;
    string line;
    getline(File, line);
    getline(File, line);
    cout << line;


    system("pause");
}

运算符>>在分隔符之间读取标记。默认情况下,空格和换行符是分隔符。因此,在最后一个运算符>>调用第一个循环后,您仍然在同一行,并且第一个getline()调用只读取新行字符。