从文本文件读取字符时,我不知道为什么最后一个字符被读取两次?但是,如果我在行中插入新行,它将不再读取两次。
这是班
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/