.get函数在C ++中打开文件流

时间:2011-03-26 21:33:39

标签: c++ arrays fileinputstream

我有一个打开的输入文件流。它能够成功打开另一个文件(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)只会导致一行读取,而其他行则像魅力一样(可以这么说)。

2 个答案:

答案 0 :(得分:4)

在第一个版本中,.get(array,size)提取字符,直到分隔符。默认情况下,这是换行符'\ n'。但是,一旦到达此字符,它就不会从输入流中提取它,而是将其留给下一次输入尝试。因此,下次您致电get()时,它会找到上一个get()的换行符并立即停止。

.getline()有效,因为它提取换行符并且.get有效,因为它只是一次获取一个字符,直到文件结尾。

答案 1 :(得分:0)

get(char *,int)读取直到deliminator('\ n')但不提取它 - 所以它被“卡住”了。 getline删除它。