Ich habe einen Text, der kodiert wird base64 Zum Beispiel verwenden Ich habe einen Stringin qt c "=" von codierten String ersetzt ++
string = "Hello"
Es kodiert wird
Encoded string is :"SGVsbG9XQ1Q="
und dann prepend die Zeichenfolge mit "||" (2-Pipe-Zeichen)
Jetzt Problem ist, ich all =
in dieser codierten Zeichenfolge ersetzt werden soll mit |
(einem Rohr) nur am Ende der Saiten nicht in der Mitte einer Zeichenfolge
Wie werde ich all =
ersetzen nur am Ende des Strings mit |
in qt C++?
Hier ist mein Code:
#include <QCoreApplication>
#include <QString>
#include <QDebug>
#include <QByteArray>
QString base64_encode(QString string);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString srcString = "HelloWCT";
QString encodedString = base64_encode(srcString);
qDebug() << "Encoded string is" << encodedString;
return a.exec();
}
QString base64_encode(QString string){
QByteArray ba;
ba = ba.append(string);
ba = ba.toBase64();
ba = ba.prepend("||");
return(ba);
}
Wie meine ersetzen Logik am Ende der Zeichenkette nur anwenden kann mit der Logik jemand mir helfen?
Ich habe Logik, aber nicht wissen, wie man es anwendet?
Logic ist: es beginnt die Überprüfung vom Ende der Zeichenfolge, wenn es "=" gibt, wird es durch "|" und es wird prüfen, ob es ein anderes "=" gibt, bevor das letzte gleich wieder ersetzt wird und wenn dann vor dem zweiten "=" wenn es ein anderes Zeichen gibt, wird es aufhören zu ersetzen, wie können wir das tun?
suchen Sie nach so etwas wie 'if (ba.endsWith ('=')) ba [ba.length() - 1] = '|';'? – Mike
@Mike Ja, etwas wie das, aber was ich will ist, wenn es ein anderes Zeichen findet, dann "=" sollte es aufhören, es zu ersetzen? Kann dies mit der obigen Methode getan werden. Nach mir, wenn (ba.endsWith ('=')) ba [ba.length() - 1] = '|'; wird nur das letzte "=" ersetzen, wenn ich am Ende des Strings noch ein "=" habe? Ob das funktioniert? Ich habe meine Logik oben hinzugefügt? aber nicht bewusst, wie das geht? – cyley