文件的读写,输入输出流

ifstream fin;
fin.open("C:\book.txt",ios::in);
while(getline(fin,str))
fin>>isbn>>bookname;
读出的文件最后一行重复了,要怎么改啊

看起来您正在使用getline()函数从输入文件中读取一行文本,但随后您正在使用>>运算符从文本行中提取数据。这会导致文件的最后一行重复,因为>>运算符将在遇到第一个空格或换行符时停止读取。

要解决此问题,您可以使用该getline()函数从文本行中提取 theisbn和 the ,如下所示:bookname

while (getline(fin, str)) {
    stringstream ss(str);
    ss >> isbn >> bookname;
}

这会将整行文本读入stringstream对象ss,然后使用>>运算符从流中提取isbn和bookname值。这将确保处理整行文本,而不仅仅是它的第一部分。

或者,您可以使用该fin.get()函数逐个字符地读取文件,然后使用循环或其他逻辑手动解析文件中的值。这可能需要更多工作,但如果输入文件的格式更复杂,则可能有必要。