从文本文件读取字符时,我不知道为什么最后一个字符被读取两次?但是,如果我在行中插入新行,它将不再读取两次。

这是班

class ReadFromFile {

private:
    std::ifstream fin;
    std::string allMoves;

public:
    ReadFromFile(std::string fileName) {

        fin.open(fileName, std::ios::in);

        char my_character;
        if (fin) {
            while (!fin.eof()) {
                fin.get(my_character);
                allMoves += my_character;
            }

        } else {
            std::cout << "file does not exist!\n";
        }

        std::cout << allMoves << std::endl;
    }
};


这是文本文件的内容(没有换行符)

 1,2 3,1 1,3 1,2 1,4


和输出:

 1,2 3,1 1,3 1,2 1,44

最佳答案

您需要在fin.get之后检查fin。如果此调用失败(发生在最后一个字符上),尽管流已结束(并且my_character无效),您仍继续进行

就像是:

fin.get(my_character);
if (!fin)
    break ;

关于c++ - ifstream-读取最后一个字符两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31049930/

10-13 08:04