Qt5有类似于StringBuilder或StringBuffer的类吗?

5
令人惊讶的是,Qt5弃用了之前版本中存在的StringBuilder类。我的另一个选择是使用QTextStream,但不太方便,因为我必须传入它写入的缓冲区(例如QFileQString)。C++ (std::stringstream),C# (StringBuilder)和Java (StringBuffer)都有这些类。那么Qt呢?

1
这听起来像是一个 XY 问题。你想要达到什么目的? - MrEricSir
2
你认为为什么Qt5中禁用了StringBuilder机制? - Frank Meerkötter
http://doc.qt.io/qt-5/search-results.html?q=qstringbuilder - santahopar
1个回答

6
QStringBuilder并没有被弃用。从Qt文档中可以得知:
在4.6版本中,内部模板类 QStringBuilder 与几个 helper 函数一起添加。该类被标记为内部使用,不会出现在文档中,因为你不应该在代码中实例化它。它的使用将是自动的,如下所述。如果您想查看它,可以在 src/corelib/tools/qstringbuilder.cpp 中找到该类。
以下是他们的代码示例:
#include <QStringBuilder>

QString hello("hello");
QStringRef el(&hello, 2, 3);
QLatin1String world("world");
QString message =  hello % el % world % QChar('!');

您可以使用 C++ 中需要的所有内容,例如 std::stringstream


4
在C++11中,一定要非常小心,不要写成auto string = hello % world;。请注意保持原意并使翻译内容易于理解,不提供任何其他信息。 - peppe
当我说QStringBuilder已经被弃用时,可能是错误的,但它不像Java中的StringBuffer或C#中的StringBuilder那样是一个类。std::stringstream是一种替代方法,但我更愿意使用Qt类。理想情况下,我希望有这样的东西:QStringBuilder stringBuilder; stringBuilder << "hello, world";... - santahopar
如果QString不够用,你可以随时使用C++类,比如std::stringstream。此外,你也可以随时在std::string和QString之间进行转换,这并不是什么坏事。 - demonplus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接