C++ 如何删除100行文本文件中的最后一行,而不必重写整个文件?
假设我有一个非常大的文本文件,比如说1亿行或1GB,我想删除最后一行。是否可以在不将9999999行重写为新文件并删除旧文件的情况下执行此操作?假设该文件非常大,以至于重写选项的成本高得令人望而却步。那么,您将如何删除最后一行?谢谢。您可以打开文件,直到找到第一行分隔符(通常为LF或CR/LF,取决于平台),计算该点的文件偏移量。您可以打开文件,直到找到第一行分隔符(通常为LF或CR/LF,取决于平台),计算该点的文件偏移量,和。您应该使用截断函数,但C++ 如何删除100行文本文件中的最后一行,而不必重写整个文件?,c++,C++,假设我有一个非常大的文本文件,比如说1亿行或1GB,我想删除最后一行。是否可以在不将9999999行重写为新文件并删除旧文件的情况下执行此操作?假设该文件非常大,以至于重写选项的成本高得令人望而却步。那么,您将如何删除最后一行?谢谢。您可以打开文件,直到找到第一行分隔符(通常为LF或CR/LF,取决于平台),计算该点的文件偏移量。您可以打开文件,直到找到第一行分隔符(通常为LF或CR/LF,取决于平台),计算该点的文件偏移量,和。您应该使用截断函数,但FILE*和iostream都不支持它 但是
FILE*
和iostream
都不支持它
但是,通常在较低级别上有特定于操作系统的函数来截断文件
如果是Unix,您可以使用ftruncate
,但需要先找到要截断的偏移量(每行是否有固定大小?)
请注意,如果您打开了一个文件*
来查找偏移量,则需要确保将其与较低级别同步。您可以简单地fclose
文件,然后在决定的偏移量处用文件的ftruncate
的open重新打开它
类似的问题:和您应该使用截断函数,但
FILE*
和iostream
都不支持它
但是,通常在较低级别上有特定于操作系统的函数来截断文件
如果是Unix,您可以使用ftruncate
,但需要先找到要截断的偏移量(每行是否有固定大小?)
请注意,如果您打开了一个文件*
来查找偏移量,则需要确保将其与较低级别同步。您可以简单地fclose
文件,然后在决定的偏移量处用文件的ftruncate
的open重新打开它
类似的问题:和将文件的大小调整得更小?您的目标是哪个操作系统?跨平台?缩小文件大小?目标是哪个操作系统?跨平台?