Botan管道故障率异常

时间:2017-06-06 11:08:52

标签: c++ botan

当我按照Botan文档管道/过滤器消息处理中的说明操作时,我遇到了意外的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。

这是一个错误还是我的代码有问题?

1 个答案:

答案 0 :(得分:0)

这就是C ++输入流的工作方式;当尝试读取EOF时{,{3}}。

我们可以从记录的Botan代码中看到failbit and eofbit are set;简而言之,你在这里无需担心。计算机只是告诉您已经消耗了所有输入数据 1

1 这不仅仅是 eofbit 在最严格意义上的含义,而是Botan的operator>>的工作方式(尽可能多地读取) can)需要尝试阅读EOF;否则,它不会知道何时停止!