替换 Qt C++ 中编码字符串的"="

replacing "=" of encoded string in qt c++

本文关键字:字符串 编码字符 编码 Qt C++ 替换      更新时间:2023-10-16

我有一个使用base64编码的文本例如,我有一个字符串

string = "Hello"

它是编码

Encoded string is :"SGVsbG9XQ1Q="

,然后用" ||"预先准备字符串(2-Pipe字符)

现在问题是我要用|(一个管道)在字符串末端替换该编码的字符串中的所有=,而不是在任何字符串中间

我将如何仅在QT C 中使用|的字符串末端替换所有=

这是我的代码:

#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);
}

如何仅在字符串结束时应用我的替换逻辑?有人可以帮助我使用逻辑吗?

我有逻辑,但不知道该如何应用?

逻辑是:如果有" ="它将用" |"替换为" =",它将开始从字符串的末端进行检查。并且它将在最后一个等同之前的另一个" =",然后再替换。Div>

您可以从末端到开始循环循环(并在找到'='以外的其他字符时打破循环),将'='的每一次CC_7替换为'|',类似这样:

QByteArray ba("SGVsbG9XQ1Q=");
for(int i=ba.length()-1; i>=0 && ba[i]=='='; i--)
    ba[i] = '|';

我找到了精确的解决方案:

for(int i=ba.length()-1; i>=0 ;i--)
         if(ba.at(i) == '=')
         {
            //replace with "|"
            ba.replace(i,1,QByteArray("|"));
         }
        else
           break;