c++ - 如何检查文本文件中的特定行是否以特定单词开头

标签 c++ qt

我有一个文本文件,我在其中写入磁盘分区中所有文件的路径。

WriteToFile::WriteToFile(QString path, QString data)
{
    path = "E:/Data.txt";
    QFile file(path);
    if ( file.open(QFile::Append) )
    {
        data += "\r\n";
        QTextStream stream( &file );
        stream << data << endl;
        qDebug() << "Writting: " << data;

    }
}

我只将新路径写入文件中。

void ScanDir::qDirIteratorScanner()
{
    // QString basePath;
    QDirIterator it(this -> basePath, QDir::Files, QDirIterator::Subdirectories);
    while (it.hasNext())
    {
        // QStringList paths;
        paths = scanned();
        QString path = it.next();

        qDebug() << "Collected : " << paths.size();

        if (!paths.contains(path)) {
            WriteToFile writeToFile(basePath, path);
            paths << path;
        }
        else {
            qDebug() << "Already put : " << path;
        }
    }

}

我预计有时会开始扫描分区,但在程序完成扫描分区之前停止程序。我想通过将“LAST-SCAN-POINT”附加到文件中最后一个路径条目的开头来标记我上次停止的位置(如果它是新路径),或最后一个 if (!paths.contains(path)) (如果我在程序检查路径是否已插入文件时终止程序)

如何检查文本文件中是否存在以 LAST-SCAN-POINT 开头的行

Data.txt

C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7010.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7011.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7012.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7013.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7014.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7015.idrc
LAST-SCAN-POINT C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7016.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7017.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7018.idrc
C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7019.idrc

最佳答案

如何使用QString::startsWith method ?例如:

QString path = "LAST-SCAN-POINT C:/Program Files/Adobe/Adobe InDesign CC 2015/Plug-Ins/Layout/(Alignment Panel Resources)/idrc_PNGA/7016.idrc";

if(path.startsWith("LAST-SCAN-POINT ")) {

    qDebug() << "The path starts with 'LAST-SCAN-POINT '";
} else {
    qDebug() << "The path does not start with 'LAST-SCAN-POINT '!";
}

关于c++ - 如何检查文本文件中的特定行是否以特定单词开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40560118/

相关文章:

c++ - 缺少虚拟关键字的警告

c++ - CPP 中的单例

c++ - 为什么指向 char 数组的指针必须需要 strcpy 才能将字符分配给它的数组,而双引号分配不起作用?

c++ - stdafx.cpp 中变量的定义

c++ - iOS Voip 唤醒电话

c++ - 动态 C++ 模型和 QML ListView

c++ - Qt 从资源包目录中读取文件

c++ - 如何从 Qt 中的 JSON 数据中检索整数值

c++ - 要使用 OpenGL 和 Qt 构建 3d 编辑器,我使用哪些方法/shell?

c++ - 如何在 Qt Creator 上使用 pthread