2017-02-23 9 views
0

私はそれを前付加その後、交換「=」QT C++でエンコードされた文字列の

Encoded string is :"SGVsbG9XQ1Q=" 

と符号化される

string = "Hello" 

文字列を持っ例えばBASE64 を使用してエンコードされているテキストを持っています"||"の文字列(2-パイプ文字)

今の問題は、私はどのように私はすべての=に置き換えられますない任意の文字列

の途中で文字列のみの終わりに|(1つのパイプ)とそのエンコードされた文字列内のすべての=を交換したいです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); 
} 

のみ文字列の最後に私の交換ロジックを適用するためにどのように誰もがロジックで私を助けることができますか?

私はロジックを持っていますが、それを適用する方法を知らないのですか?

ロジックは: "="があれば文字列の最後からチェックを開始し、 "|"で置き換えます。最後に他の "="が存在するかどうかをチェックして、最後のものが再び置換される前に、次に2番目の前に "="他の文字がある場合、置換を停止します。

+0

をあなたは'の場合(ba.endsWith( '='))BAのようなものをお探しですか? – Mike

+0

@Mikeはいこれのようなものですが、私が欲しいものは他の文字を見つけたら "="それを置き換えなくてはなりませんか?上記の方法でこれを行うことができますか? if(ba.endsWith( '='))ba [ba.length() - 1] = '|';最後の "="を置き換えます。文字列の最後にもう1つ "="ある場合はどうしますか?これは動作しますか?上記のロジックを追加しましたか?どのようにそれを行うには気づいていない? – cyley

答えて

1

あなたは、'|'によって'='のすべての発生を置き換え、先頭に終わりからQByteArrayをループ(とあなたが'='以外の文字を見つけたときにループを切断する)ことができる。このような何か:

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

rbegin()はQbyte配列のメンバーではありませんか?私たちはbeginとendを代わりに使うことができます – cyley

+0

エラーを出すrbginはqbytearrayのメンバーではありません – cyley

+0

@cyley、私の編集した答えを見てください。 ** ['rbegin'](https://doc.qt.io/qt-5/qbytearray.html#rbegin)は、' QByteArray' **のメンバーです。しかし、それはQt 5.6で導入されました(これより古いバージョンを使用しているようです)。 – Mike

0

は、私は厳密解を発見した: - |; ` '' [1 ba.length()] =

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

私たちの改善をロールバックして、あなたの投稿を改ざんしてはいけません。 – FelixSFD

+0

私はここに私の答えを掲載しました – cyley

関連する問題