从istream读取boost :: multiprecision :: cpp_int

时间:2018-07-21 20:21:39

标签: boost-multiprecision

我正在尝试从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整数输入以正常工作?

0 个答案:

没有答案