我有一个函数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地址。我的代码有什么问题吗?
答案 0 :(得分:2)
每次通话都会杀死之前的内容,因此您只能看到最后一个内容的结果。
这是因为默认情况下,当您打开QIODevice::WriteOnly
指定QIODevice::WriteOnly
时,现有数据会被销毁,正如in the documentation所述:
QIODevice::Truncate
设备已开放供写入。请注意,此模式意味着截断。
QIODevice::Append
如果可能,设备在打开之前会被截断。设备的所有早期内容都将丢失。
如果要保留现有文件内容,则必须传递QIODevice::Append
标记。
file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text);
设备以追加模式打开,以便将所有数据写入文件末尾。
lxml