我正在尝试从istream中读取boost :: mutiprecision cpp_int值,以及它意外抛出的异常。这是我的测试程序:
#include <boost/multiprecision/cpp_int.hpp>
int main() {
boost::multiprecision::cpp_int v;
while(std::cin >> v) {
std::cout << v << std::endl;
}
}
这应该读取数字并打印出来,直到输入上没有数字。但是,如果有非数字,非空格字符,我会得到:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >'
what(): Unexpected character encountered in input.
Aborted (core dumped)
更糟糕的是,如果最后一个数字后面没有空格,则会在读取最后一个数字之前发生这种情况,因此我不能只是捕捉到异常并忽略它。
如何获取boost :: multiprecision整数输入以正常工作?