簡體   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