我正在将time_t转换为人类可读的格式。为此我使用asctime()
函数。但是在c ++参考文献中也提到了它。
该字符串后跟一个换行符('\ n')并终止 带有空字符。
我知道如果我使用char指针,我可以删除'\ n'字符。如;
char * str;
str(strlen(str)-1) = '\0'; // repleacing new-line char to null-char
但是如何删除QString中的换行符?这是我的榜样;
time_t rawtime;
struct tm * timeinfo;
QString strList;
rawtime = 1430687052;
timeinfo = localtime (&rawtime);
strList += asctime(timeinfo);
编辑:
我正在创建报告文件,因此我的QString
中有很多'\ n'字符,这就是为什么将所有'\ n'char替换为空指针不是一个好主意。
答案 0 :(得分:5)
告诉我为什么在使用Qt时使用C标准API? 你有很棒的Qt API来处理日期。
QDateTime time;
uint rawtime = 1430687052;
time.setTime_t(rawtime);
QString humanDate = QLocale::system().toString(time, QLocale::ShortFormat);
答案 1 :(得分:2)
我会使用QString::trimmed()
函数删除所有尾随和前导空白字符,例如'\ t','\ n','\ v','\ f','\ r'和' ”。即:
strList = strList.trimmed();
答案 2 :(得分:0)
您会发现有三种方法很有用:
bool QString::endsWith (const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const;
QString::remove(int position, int n);
QString& replace(const QRegExp &rx, const QString & after)
只需删除最后一个字符即可进行设置。您可以使用remove()
或replace()
在字符串末尾使用正则表达式检测\n
。
请注意,内部QString
使用16位UTF字符编码。
如果您希望使用8位字符,则应使用QByteArray
及其QByteArray::remove(int position, int n)
方法。
答案 3 :(得分:0)
来自修剪的文档:
与simplified()不同,trimmed()仅留下内部空白。
例如:
$mail
答案 4 :(得分:0)
QString会删除\0
,因此最后一个字符是\n
。这意味着您也可以通过将字符串的大小调整为当前大小-1来删除它。