我有一个打开的输入文件流。它能够成功打开另一个文件(txt文件)。通过调整下面的代码我可以读取并输出其他txt文件(所有ASCII字符,只是字母)就好了。但是,我正在玩下面的功能。当实际存在三行时,这导致读取一行。我想知道为什么。数组的大小不是问题,即,使其更大似乎没有任何修复。
void DispFile(fstream& iFile)
{
auto char fileChar[256];
while (inFile.get(fileChar,256))
{
cout << fileChar;
}
}
以下是WORKS的代码:
void DispFile(fstream& iFile)
{
auto char fileChar[256];
while (inFile.getline(fileChar,256))
{
cout << fileChar;
cout << endl;
}
}
OR
void DispFile(fstream& iFile)
{
char file;
while (inFile.get(file)
{
cout << file;
}
}
那么为什么使用inFile.get(array,dimension)只会导致一行读取,而其他行则像魅力一样(可以这么说)。
答案 0 :(得分:4)
在第一个版本中,.get(array,size)
提取字符,直到分隔符。默认情况下,这是换行符'\ n'。但是,一旦到达此字符,它就不会从输入流中提取它,而是将其留给下一次输入尝试。因此,下次您致电get()
时,它会找到上一个get()
的换行符并立即停止。
.getline()
有效,因为它提取换行符并且.get
有效,因为它只是一次获取一个字符,直到文件结尾。
答案 1 :(得分:0)
get(char *,int)读取直到deliminator('\ n')但不提取它 - 所以它被“卡住”了。 getline删除它。