任意の長さの文字列から 128 ビットのデータ ブロックを操作する関数があります。文字列が 128 ビットのチャンクに均等に割り切れない場合は、それに応じてパディングされます。
目的は、関数に渡される文字列のデータを変換することです。
私は当初、次のような文字列をループすることを考えていました。
//This might have stupid errors. Hopefully it stillg gets the point across.
for (int i = 0; i < strn.size(); i += 16)
{
string block = strn.substr(i, i + 15);
strn.replace(i, i + 15, block);
}
これでうまくいくと思いますが、これを行うにはもっとエレガントな方法が必要だと思います。頭に浮かんだ 1 つのアイデアstrn
は、クラスにカプセル化し、その内容を 128 ビットのチャンクで読み取ることができる独自の反復子を実装することでした。これは魅力的です。コンストラクターがパディングを処理でき、現在使用している関数の一部を非公開にすることができるため、誤用の可能性を回避できます。これは実りあるアプローチのように思えますか? もしそうなら、どうやって自分のイテレータを実装するのですか? 私は C++ に非常に不慣れなので、詳細な説明は大歓迎です。
他の、おそらくより良いアプローチはありますか?
ありがとう!