牡丹管道 failbit 异常
Botan pipe failbit exception
当我按照 Botan 文档 Pipe/Filter 消息处理中的说明进行操作时,我遇到了意外的 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。
这是错误还是我的代码有问题?
这就是 C++ 输入流的工作方式;当尝试读取超过 EOF 时,failbit and eofbit are set.
从文档化的Botan代码可以看出operator>>
will throw an exception if only failbit is set after extraction is attempted;简而言之,您在这里无需担心。计算机只是告诉你,你消耗了所有的输入数据1.
1 这不仅是 eofbit 最严格意义上的意思,也是 Botan 的 operator>>
作品(尽可能多地阅读)需要尝试阅读超过 EOF;不然不知道什么时候停止!
当我按照 Botan 文档 Pipe/Filter 消息处理中的说明进行操作时,我遇到了意外的 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。
这是错误还是我的代码有问题?
这就是 C++ 输入流的工作方式;当尝试读取超过 EOF 时,failbit and eofbit are set.
从文档化的Botan代码可以看出operator>>
will throw an exception if only failbit is set after extraction is attempted;简而言之,您在这里无需担心。计算机只是告诉你,你消耗了所有的输入数据1.
1 这不仅是 eofbit 最严格意义上的意思,也是 Botan 的 operator>>
作品(尽可能多地阅读)需要尝试阅读超过 EOF;不然不知道什么时候停止!