从ifstream中读取字符

reading characters from ifstream

本文关键字:字符 读取 ifstream      更新时间:2023-10-16

我试图从文件中读取字符,但我陷入了无限循环,这是代码:

#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream ifs("ifile.txt", ios_base::in);
    int b;
    while ((b = ifs.get()) != EOF)
    {
        cout << b << endl;
    }
}

注意,我在创建.exe文件的项目调试文件夹中创建了一个名为ifile.txt的文件(我使用的是Microsoft visual studio 2013)

当我运行它时,它会陷入一个无限循环。不确定为什么会发生这种情况,但我认为可能是因为我创建了ifile.txt?

请永远不要在eof()上循环——这几乎总是错误的。

试试这个:

ifstream ifs("ifile.txt", ios_base::in);
char b;
int letters[26] = {};
int numbers[10] = {};
while(ifs.get(b))) // much better !!
{
    cout << b << endl;
}
ifs.close();

在解释中:

使用CCD_ 2有几个问题。EOF只有在您尝试读取角色后才会触发。我知道这并不完全是你使用它的方式。另一个问题是,在流上发生错误后(可能是你的infimite循环?)EOF不会被检查。这就是为什么最好检查读取是否成功,而不是是否到达文件结尾。