我将QString
转换为QDataTime
- 对象时遇到问题。
字符串看起来像:"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 ""
问候
答案 0 :(得分: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();
编辑 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();
答案 1 :(得分:0)
使用qPrintable(string);
,它将删除双引号。
日期如何制作字符串不是问题。它是qDebug
处理字符串的方式。根据{{1}},char *
与QString
不同。
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
希望有所帮助。