0
我是C++初學者,這是學校..getline()不讀取第一行
我想讀一個關於28kb大的文件。該程序的作品,但它不打印前41行。它適用於較小的文件。 起初我正在讀入一個char數組並將其切換爲字符串。 我也試過改變日誌緩衝區,但它顯然應該足夠大.. 我覺得這應該是很簡單的,但只是不能圖出來..
任何幫助將大大apreciated .. 謝謝!
#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;
}
線條有多少個字符?如果它們中的至少一個大於'std :: string :: max_size()',則提取將失敗。 – 0x499602D2 2014-10-31 23:24:31
也許'getline'正常工作,但是當您打印到'cout'時,某些字符會丟失。嘗試爲所有行加上'infoEspion.size()'並查看它是否與文件大小匹配。如果是這樣,比getline可以正確讀取你的輸入。 – pts 2014-10-31 23:31:47
請檢查每個I/O操作(打開,getline,關閉)是否有錯誤,並使錯誤的程序中止。完成後,明確更新您的問題,說明沒有I/O錯誤。 – pts 2014-10-31 23:33:12