私はC++(CおよびJava大学の教授から来ています)を学んでいますが、今日はジェネリックストリームから取り出したバイトをフィルタリングし、ストリーム。C++ストリーム内のバイトをフィルタリングするための最良の方法
私が入力をbase64エンコードし、出力をstdoutに書き込むクラスを作りたいとしましょう。私が書くでしょうbashで
:
echo "some input data" | base64
C++では、私がこのように振る舞うだろうクラスMyB64Encoder
を実装する:
std::cout << myB64EncoderObject << "some input data";
//Alternatively, is it possible to make it like this?
std::cout << MyB64Encoder << "some input data";
事は、当然のことながら、myB64EncoderObject
があり、あります内部状態および内部バッファを維持する。ブロッキングと過度のメモリ使用を防ぐために、小さなチャンクを読み込んで処理し、処理した直後にそれぞれのデータを出力できる必要があります。何のストリームの読み取りがない場合、オブジェクトがエラーをスローする必要があり
- :
はの世話をするためにいくつかのより多くの事があります(破損したパイプのようなもの)
このような問題を効率的に解決するにはどうすればよいでしょうか?私はそれを現代のC++ 1xにどのように実装しますか?
ストリームをラップする(またはストリームバッファをラップする) –