2017-06-06 11 views
0

Botanの文書pipe/filterメッセージ処理の指示に従うと、予期しないfailbitエラーが発生しました。Botan pipe failbit例外

私のコードは非常に簡単です:

ifstream in("2.txt", ios::binary); 
ofstream out("2.enc", ios::binary); 
AutoSeeded_RNG rng; 
SymmetricKey key(rng, 16); // a random 128-bit key 
InitializationVector iv(rng, 16); // a random 128-bit IV 

Pipe pipe(get_cipher("AES-128/CBC/CTS", key, iv, ENCRYPTION), new DataSink_Stream(out)); 
pipe.start_msg(); 
in >> pipe; 
pipe.end_msg(); 
cout << in.fail() << endl; 

それは常に出力1、failbitが常に1

に設定されているので、これはバグでしょうか私のコードに何か問題はありますか?

答えて

0

これは、C++入力ストリームの動作を示しています。 EOFを過ぎて読み込みが試みられると、failbit and eofbit are set

文書化されたBotanコードからは、operator>> will throw an exception if only failbit is set after extraction is attempted、一言で言えば、ここでは何も心配する必要はありません。コンピュータは、入力データをすべて消費したことを伝えるだけです。


これはeofbitは、厳密な意味では意味するが、(それができる限り多くを読んで)牡丹のoperator>>作品が試みEOFを過ぎて読んで必要なことな方法どのようなだけではありません。さもなければ、いつ停止するか分からないでしょう!