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