So löschen Sie new-line-Zeichen in asctime in QString
Ich bin Umwandlung time_t, um für Menschen lesbaren format. Für diesen Zweck bin ich mit asctime()
Funktion. Aber es ist auch erwähnt in c++ - Referenzen.
Wird die Zeichenfolge gefolgt von einem neue-Zeile-Zeichen ('\n'), und beendet
mit einem null-Zeichen.
Ich weiß, dass ich das löschen kann '\n' - Zeichen, wenn ich mit char-Zeiger. Wie;
char * str;
str(strlen(str)-1) = '\0'; //repleacing new-line char to null-char
Aber wie kann ich den löschen neue Zeile characther in QString? Hier ist mein Beispiel;
time_t rawtime;
struct tm * timeinfo;
QString strList;
rawtime = 1430687052;
timeinfo = localtime (&rawtime);
strList += asctime(timeinfo);
EDIT:
Ich bin erstellen von Berichts-Datei, so dass ich viele von '\n' char in meiner QString
, das ist, warum ersetzt alle "\n " char zu null-Zeiger ist keine gute Idee.
- Verwenden Sie einfach die Qt nur und das problem ist gelöst (siehe meine Antwort).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es 3 Methoden finden Sie nützliche:
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)
Entfernen Sie einfach das Letzte Zeichen, und Sie sind gesetzt. Sie können entweder
remove()
oderreplace()
mit einem regexp erkennen\n
am Ende der Zeichenfolge.Bitte beachten Sie, dass intern
QString
verwendet, die 16-bit UTF Zeichen-Kodierung.Wenn Sie laufen auf 8-bit-Zeichen, als Sie sollten verwenden
QByteArray
und es istQByteArray::remove(int position, int n)
Methode.Sagen Sie mir, warum Sie mit der C-standard-API, wenn Sie Qt benutzen?
Sie haben große Qt-API zu handhaben Termine.
Zu entfernen newline-Zeichen in Ihrem Konzept nutzen Sie einfach QString::getrimmt (entfernt von Vorder-und Rückseite einer weißen Zeichen).
Ich würde
QString::trimmed()
Funktion zum entfernen aller Leerzeichen am Anfang und Ende whitespace-Zeichen wie '\t', '\n', '\v', '\f', '\r' und ' '. I. e.:ALS vahancho bereits hingewiesen. getrimmt ist wahrscheinlich der beste Weg zu gehen.
Aus der Dokumentation getrimmt:
Im Gegensatz zu vereinfacht(), beschnitten() Blätter internen whitespaces allein.
So zum Beispiel:
QString entfernt die
\0
für Sie, so dass das Letzte Zeichen Ihres\n
. Das heißt, Sie können auch entfernen Sie es einfach durch Größenänderung Ihrem string zu seiner aktuellen Größe -1.