【问题标题】:Best way to read a QString line by line逐行读取 QString 的最佳方法
【发布时间】:2019-10-10 08:18:03
【问题描述】:

我想为 c++ 中的 qstring 创建一个 grep 函数(如 bash 中的 grep)。所以我需要一个循环,我可以逐行读取 QString 。什么是最好的方法?是不是要一个字母一个字母地遍历QString,测试是否出现了\n,或者有没有更简单/更快/更短的方法?

QString Text = "Line1\nLine2\n";
Loop {
    std::cout << Line.toStdString() << std::endl;
}

这应该是输出:

Line1
Line2

【问题讨论】:

标签: c++ qt qstring


【解决方案1】:

@thuga 和 @drescherjm 的想法

    QString TXT="l1\nl2\nl3\nl4", Line;
    QTextStream stream(&TXT);

    while (stream.readLineInto(&Line)) {
        std::cout <<Line.toStdString() << std::endl;
    }
    //Set the device to pos 0
    stream.seek(0);


输出:

l1
l2
l3
l4
    QString TXT="l1\nl2\nl3\nl4";
    QStringList Lines = TXT.split('\n');
    for (int i = 0; i < Lines.size(); i++) {
        std::cout <<Lines[i].toStdString() << std::endl;
    }

输出:

l1
l2
l3
l4

【讨论】:

  • 知道什么是更快的吗?
  • 您可以尝试测量,看看哪个性能更快。
  • 我同意基准来解决这个问题。请注意,您可能必须使字符串更大才能确定(因为对于这样一个小示例,结果将花费非常短的时间)。还要确保打开优化。我见过一些案例,Visual Studio 的 Debug 模式的执行时间是 Release 模式的 100 倍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 2021-12-08
  • 2013-01-21
  • 2016-01-29
相关资源
最近更新 更多