[英]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.