Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C+;中的文件中删除一行+; 如何删除C++中的一个特定的行?< /p>_C++_String_Io - Fatal编程技术网

从C+;中的文件中删除一行+; 如何删除C++中的一个特定的行?< /p>

从C+;中的文件中删除一行+; 如何删除C++中的一个特定的行?< /p>,c++,string,io,C++,String,Io,请假设将整个文件读入内存、修改和写回不是一个选项,因为文件太大,无法放入内存。有没有一种方法可以做到这一点?或者无法更改文件大小?您可以使用hdf5格式/库。将数据转换为hdf5,并使用c的hdf5库读取数据块 请参见,但您必须手动读取并覆盖要删除的行之后的所有数据。同意@Wimmel,除非您要从文件中删除最后一行。除了读取文件并找到要删除的行,然后重新写入文件,您将没有实际的选择。在boost库中,您可能可以更高效地执行此操作。目前没有允许“就地”修改文件的文件系统,也没有我所知道的能够理解“

请假设将整个文件读入内存、修改和写回不是一个选项,因为文件太大,无法放入内存。有没有一种方法可以做到这一点?或者无法更改文件大小?

您可以使用hdf5格式/库。将数据转换为hdf5,并使用c的hdf5库读取数据块

请参见,但您必须手动读取并覆盖要删除的行之后的所有数据。同意@Wimmel,除非您要从文件中删除最后一行。除了读取文件并找到要删除的行,然后重新写入文件,您将没有实际的选择。在boost库中,您可能可以更高效地执行此操作。目前没有允许“就地”修改文件的文件系统,也没有我所知道的能够理解“行”的文件系统(文件系统本身只将文件视为字节流或字节块)。因此,无论如何,您需要读取整个文件,并写回除要删除的一行之外的所有内容。如果确实需要,您可以分部分执行此操作(例如,一个大于内存大小的文件),但它仍然是“读取全部内容,写回大部分内容”-如果您运气不好,大部分文件需要读取,如果它是100000000行中的第3行。。。