仅当文本文件中尚不存在文本时,我才想将文本添加到文本文件中。我的下面的实现添加了文本,即使它已经存在。如何修复我的实现只添加新的不存在的项?
到目前为止我的实施:
WriteToFile::WriteToFile(QString data)
{
path += "C:/Data.txt";
QFile file(path);
if ( file.open(QFile::Append) )
{
QTextStream in (&file);
QString line;
do {
line = in.readAll();
qDebug() << in.readLine();
if (!line.contains(data)) {
QTextStream stream( &file );
data += "\r\n";
stream << data << endl;
}
} while (!line.isNull());
}
}
答案 0 :(得分:1)
你要么:
从简单来看,只需创建一个QSet<QString> writtenSoFar
,并为每个路径检查集合是否包含它,如果是,则跳过写入,如果没有,写入并将其附加到集合。在第一种情况下,您必须将解析后的路径写入集合中,以便进行单一检查,效率极低,就像解析本身一样。因此,您可以更好地跟踪路径。
该集合对于提供良好的查找性能非常重要。它非常快,因为它基于散列,它基本上是一个无值QHash
。