Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
如何在QT中的文本文件中间插入文本?_Qt_Text_Insert - Fatal编程技术网

如何在QT中的文本文件中间插入文本?

如何在QT中的文本文件中间插入文本?,qt,text,insert,Qt,Text,Insert,我正在编写一个程序,在一个硬件单元上执行几个测试,并记录每个测试的结果和执行测试所采取的步骤。诀窍是,我希望程序在这些结果可用时将其记录到文本文件中,以便在程序崩溃时,不会丢失已获得的结果,并且日志可以帮助调试崩溃 例如,假设一个程序由两个测试组成。如果程序已完成第一个测试并正在进行第二个测试,则日志文件如下所示: Results: Test 1 Result A: Passed Test 1 Result B: 1.5 Volts Log: Setting up instruments. B

我正在编写一个程序,在一个硬件单元上执行几个测试,并记录每个测试的结果和执行测试所采取的步骤。诀窍是,我希望程序在这些结果可用时将其记录到文本文件中,以便在程序崩溃时,不会丢失已获得的结果,并且日志可以帮助调试崩溃

例如,假设一个程序由两个测试组成。如果程序已完成第一个测试并正在进行第二个测试,则日志文件如下所示:

Results:
Test 1 Result A: Passed
Test 1 Result B: 1.5 Volts

Log:
Setting up instruments.
Beginning test 1.
[Steps in test 1]
Finished test 1.
Beginning test 2.
[whatever test 2 steps have been completed]
第二次测试完成后,日志文件如下所示:

Results:
Test 1 Result A: Passed
Test 1 Result B: 1.5 Volts
Test 2 Result A: Passed
Test 2 Result B: 2.0 Volts

Log:
Setting up instruments.
Beginning test 1.
[Steps in test 1]
Finished test 1.
Beginning test 2.
[Steps in test 2]
Finished test 2.
All tests complete.

我该怎么做呢?我一直在查看QFrand和Qttext流的帮助文件,但是我没有看到在现有文本中间插入文本的方法。我不想创建单独的文件并在最后合并它们,因为在崩溃的情况下,我最终会得到单独的文件。我也不想在每次修改时从头开始写文件,因为看起来应该有一个更快、更优雅的方式来做。

< P>你不能在文件中间添加更多的东西。我会用两个单独的文件,另一个用于结果,另一个用于日志。

< P>你不能在文件中间添加更多的东西。我将使用两个单独的文件,一个用于结果,另一个用于日志。

将把整个文件读入一个文件。 在qBytErrar上,您可以使用INSERT在中间插入文本, 然后再把它写回文件

或者你可以使用经典的C风格,可以在中间文件的帮助下修改中间文件。

将整个文件读入A。 在qBytErrar上,您可以使用INSERT在中间插入文本, 然后再把它写回文件


或者你可以使用经典的C风格来帮助中间文件在中间文件的帮助下修改。

正如@ Ruku指出的,没有一种内置的方法在重写的文件中插入数据。但是,如果您知道区域的大小,即,如果要写入的文本具有固定长度,则可以在文件中写入一个空格,稍后替换它。检查


关于重写部分文件的讨论。

正如@Roku指出的,没有内置的方法可以通过重写在文件中插入数据。但是,如果您知道区域的大小,即,如果要写入的文本具有固定长度,则可以在文件中写入一个空格,稍后替换它。检查
覆盖部分文件的讨论。

我最终选择了从头开始编写文件的方法,我在问题中提到了这个方法,但我对此犹豫不决。这种技术的好处是,即使在发生崩溃的情况下,它也会生成一个文件,因为日志和结果从一开始就不会放在不同的文件中。此外,重写文件仅在添加新结果时发生(很少发生),而更新日志意味着只需像往常一样向文件添加文本。我仍然有点惊讶,没有办法让操作系统为您将文本插入到文件中

哦,对于那些必须尽可能高效地使用此功能的人来说,以下内容可能有用:

我最终选择了我在问题中提到的“从头开始写文件”方法,但我对此犹豫不决。这种技术的好处是,即使在发生崩溃的情况下,它也会生成一个文件,因为日志和结果从一开始就不会放在不同的文件中。此外,重写文件仅在添加新结果时发生(很少发生),而更新日志意味着只需像往常一样向文件添加文本。我仍然有点惊讶,没有办法让操作系统为您将文本插入到文件中

哦,对于那些必须尽可能高效地使用此功能的人来说,以下内容可能有用:

是的,那会管用,但我不建议这样做。包含大量空的、保留的、空间的输出文件看起来很糟糕,一个非常简单的日志代码可能会变成一个不必要的复杂代码。是的,这是可行的,但我不建议这样做。包含大量空的、保留的空间的输出文件看起来很糟糕,一个非常简单的日志代码可能会变成一个不必要的复杂代码。将其读入QFile实际上会从文件中删除该文本吗?你能举一个例子,再次将其写回文件,使文件现在包含前面的文本和修改吗?谢谢将其读入QFile是否实际上会从文件中删除该文本?你能举一个例子,再次将其写回文件,使文件现在包含前面的文本和修改吗?谢谢