1

我在将 a 转换QStringQDataTime-Object 时遇到问题。

字符串看起来像:"2008:09:23 14:18:03并且长度为 20。问题是,如果我删除第一个字符,输出看起来像:"008:09:23 14:18:03

这有问题吗?我可以删除所有没有数字的字符吗?

编码:

        QDateTime date;
        QString d=QString::fromStdString(result.val_string);
        date.fromString(d,"yyyy:MM:dd hh:mm:ss");
        qDebug()<<d;
        qDebug()<<d.length()<<date.toString();

和输出:

 "008:09:23 14:18:03
 19 "" 

问候

4

2 回答 2

2

双引号由 打印qDebug,它们不包含在QString本身中。但是,您似乎在原始字符串的末尾有一些不可打印的字符,它删除了结束"符号。尝试仅将前 19 个字符复制到QString

    QString d = QString::fromStdString(result.val_string.substr(0, 19));
    date.fromString(d,"yyyy:MM:dd hh:mm:ss");
    qDebug()<<d;
    qDebug()<<d.length()<<date.toString();

EDIT QDateTime.fromString是返回对象的静态方法QDateTime——它不会修改对象本身!

QDateTime date;
std::string val_string = "2008:09:23 14:18:03";
QString d = QString::fromStdString(val_string.substr(0, 19));
date = QDateTime::fromString(d,"yyyy:MM:dd HH:mm:ss");
qDebug()<<d;
qDebug()<<d.length()<<date.toString();
于 2013-09-24T17:54:24.073 回答
0

使用qPrintable(string);它会去掉双引号。

日期如何生成字符串不是问题。它如何qDebug处理字符串。Achar *不同于 aQString根据QDebug

http://qt-project.org/doc/qt-5.0/qtcore/qtglobal.html#qPrintable

http://qt-project.org/doc/qt-5.0/qtcore/qstring.html#toLocal8Bit

http://qt-project.org/doc/qt-5.0/qtcore/qbytearray.html#constData

希望有帮助。

于 2013-09-24T17:51:03.070 回答