c++ - Qt QString.arg() 不工作

标签 c++ qt qt4 qstring

<分区>

我试过使用Qt4.8文档中给出的例子:

#include <QCoreApplication>
#include <QString>
#include <iostream>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString str;
    str = "%1 %2";

    str.arg("%1f", "Hello");        // returns "%1f Hello"
    std::cout << str.toStdString().c_str() << std::endl;

    str.arg("%1f").arg("Hello");    // returns "Hellof %2"
    std::cout << str.toStdString().c_str() << std::endl;

    return a.exec();
}

然而这输出:

%1 %2

%1 %2

两次。我已经在 Windows 7 和 Ubuntu 上使用 QtCreator 和命令行尝试过这个。我检查过我有

QMake 版本 2.01a

在/usr/lib/x86_64-linux-gnu 中使用 Qt 版本 4.8.1

在 Windows 中:

QMake 版本 2.01a

在 C:\qt\4.7.0\lib 中使用 Qt 版本 4.7.0

我什至检查了我的源文件中的非 ascii 字符,例如“%”符号是正确的。请告诉我为什么这不起作用!

这是我正在使用的 PRO 文件:

QT       += core

QT       -= gui

TARGET = testarg
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

最佳答案

arg() 函数不修改 QString(如果您查看文档,这些函数是 const。)它们返回一个新的 QString,您不会将其保存在任何地方。如果你想修改原始字符串,你可以这样做:

str = str.arg("%1f", "Hello");

如果你想保留原来的,只需使用一个新的 QString 代替:

QString tmp = str.arg("%1f", "Hello");

关于c++ - Qt QString.arg() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21881893/

相关文章:

c++ - Armadillo 对象上的 malloc

c++ - 在与应用程序相同的窗口中显示 Qt 虚拟键盘

c++ - 为回调用例传递的成员函数指针

c++ - Qt - setupUi( )

c++ - 为什么我的 vector 大小一直重置为 0? (目前正在使用类(class))

c++ - 具有 2 个输入类和计算结果类的简单 C++ 项目的概念

linux - Qt 应用程序部署 - libc.so.6 : version `GLIBC_2.17' not found

c++ - QT做while循环

c++ - 启用 ItemClipsChildrenToShape 后,如何在 QGraphicsScene 中进行精确的鼠标事件处理?

c++ - forward_list 迭代器不兼容