gpt4 book ai didi

c++ - QTextStream 读取一个字符串直到制表符

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:05 25 4
gpt4 key购买 nike

我的文件名中有空格,但由制表符分隔。我如何使用 QTextStream 一个一个地阅读它们?

正常的方式会被制表符和空格分割(实际上是任何 QChar::isSpace()),这不是我想要的:

QString s = "file 1.txt\tfile 2.txt";
QTextStream st(&s);
st >> s1 >> s2; // <--- This won't work, it'll give me "file" and "1.txt"

现在我正在使用 QString::split() 而不是 QTextStream 作为解决方法,但我宁愿使用 QTextStream.

最佳答案

如果您真的想以流的方式进行,另一种选择是创建自定义 TextStream 并覆盖 >> 运算符。

#include <QString>
#include <QStringBuilder>
#include <QTextStream>

class MyTextStream : public QTextStream {
public:
MyTextStream(QString* str) : QTextStream(str) {}

MyTextStream& operator>>(QString & str) {
QChar ch;
while (!atEnd()) {
QTextStream::operator >>(ch);
if (ch == '\t') {
break;
}
str = str % ch;
}
return *this;
}
};

int main() {
QString s1, s2;
QString s = "file 1.txt\tfile 2.txt";
MyTextStream st(&s);
st >> s1 >> s2; // <--- s1 becomes "file 1.txt" and s2 becomes "file 2.txt"
}

关于c++ - QTextStream 读取一个字符串直到制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com