如果我想从文件中的第m行和第n个字符插入或复制某些内容,我该怎么办?有没有比使用getline m和seekp更好的方法?感谢。
答案 0 :(得分:1)
有没有比使用getline m和seekp更好的方法?
不是真的!线条不是特殊的"在操作系统级别;它们只是由换行符分隔的文本文件的一部分。获取文本文件的m
行的唯一方法是阅读所有文件,直到您看到m - 1
个换行符。您的C ++库getline()
函数可能已经非常有效地实现了该操作,因此您最好只使用它。
如果您的应用程序需要在单次运行期间多次寻找大型文件的特定行,那么在启动时将整个文件读入数据结构可能是有意义的(例如,结构数组,每个代表一个一行文字);一旦你完成了这个,寻找特定的线就像数组查找一样容易。但是,如果你只需要寻找一次特定的行,那就没有必要了。
在较大的文件中重复搜索的更节省内存的方法可能是在您遇到它时记录每个行号的文件偏移量,这样您就可以轻松地返回到给定的行而无需从头开始。但是,这只是在寻求重复多次的情况下才有必要。