Qt c ++ QFile只写入最后一个输入

时间:2016-05-25 19:40:25

标签: qt qfile

我有一个函数saveResolvedInfo(),它应该将每个已解析的ip地址从结构_ResolvedInfo保存到ip.txt文件中:

void saveResolvedInfo()
{
_ResolvedInfo rf;
QFile file("ip.txt");
file.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&file);

out << rf.country << " " << rf.ip << "/n";
}

好吧,它只写了最后解析的ip地址。我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:2)

每次通话都会杀死之前的内容,因此您只能看到最后一个内容的结果。

这是因为默认情况下,当您打开QIODevice::WriteOnly指定QIODevice::WriteOnly时,现有数据会被销毁,正如in the documentation所述:

  

QIODevice::Truncate设备已开放供写入。请注意,此模式意味着截断。

     

QIODevice::Append如果可能,设备在打开之前会被截断。设备的所有早期内容都将丢失。

如果要保留现有文件内容,则必须传递QIODevice::Append标记。

  

file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text); 设备以追加模式打开,以便将所有数据写入文件末尾。

lxml