繁体   English   中英

getline()不读取第一行

[英]getline() not reading first lines

我是c ++初学者,这是学校。

我正在尝试读取一个大约28kb的文件。 该程序可以运行,但是不会打印前41行。 对于较小的文件,它可以正常工作。 起初,我正在读入一个char数组并将其切换为字符串。 我也尝试过更改日志缓冲区,但显然它应该足够大..我觉得这应该很简单,但无法弄清楚。

任何帮助将不胜感激..谢谢!

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cstdio>
#include <cerrno>

using namespace std;

struct espion
{
    char nom[30];
    char pays[20];
    char emploi[29];

};


int main()
{
    const int MAX_NOM = 30, MAX_PAYS = 20, MAX_EMPLOI = 29;
    char nomFichier[50] = "espion.txt";



    ifstream aLire;
    aLire.open(nomFichier, ios::in|ios::binary);

    if(!aLire.is_open()){
        exit(EXIT_FAILURE);
    }


    std::string infoEspion;


    while(aLire)
    {
        infoEspion.clear();
        std::getline(aLire, infoEspion);
        cout << infoEspion ;

    }

    aLire.close();


    system("pause");
    return 0;

}

从系统(“暂停”)看,您似乎正在Windows上运行。 使用ios :: binary,行尾标记不会翻译,并且cout << infoEspion; 语句以这样的方式打印这些“原始”行,即所有行都写在彼此的顶部。 (更具体地说,每行将以return结尾,但没有换行符,因此在执行每个cout语句后,光标将返回到同一行的开头。)如果取出ios :: binary,则将回显所有在一条很长的线上输入。 将语句更改为cout << infoEspion << endl; 将回显所有行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM