c++ - 在运行时 boost 异常

标签 c++ boost runtime-error

使用这段代码:

#include <fstream>

#include <boost/archive/text_oarchive.hpp>

using namespace std;

int main()
{
    std::ofstream ofs("c:\test");
    boost::archive::text_oarchive oa(ofs);
}

我在执行 boost 存档行时在运行时遇到未处理的异常:

boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::archive::archive_exception> >

最佳答案

下面一行是错误的:

 std::ofstream ofs("c:\test");

如果您的文件名为 jest,编译器会(至少)发出警告;但是 '\t' - 作为插入制表符的转义符,您的错误未被捕获。简而言之,不会创建该文件。您可以使用以下方法进行测试:

if (ofs.good()) { ... }

现在,由于文件未创建,您没有有效的迭代器传递给 boost::archive::text_oarchive,这会引发异常。

试试这个:

std::ofstream ofs("c:\\test");
//                  --^ (note the extra backslash)
if (ofs.good()) {
    boost::archive::text_oarchive oa(ofs);
    // ...
}

希望这对您有所帮助!

PS:我无法阻止自己做的最后一件事——如果你要使用

using namespace std;

然后

ofstream ofs("c:\\test");

足够好了。当然,限定 ofstream 不是错误,但它不是最好的编码风格。但是,您知道使用 using namespace 是不好的,不是吗?

PPS:谢谢 -- sharptooth 提醒我 \t 给你一个标签!

关于c++ - 在运行时 boost 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/555038/

相关文章:

c++ - 使用 'pointer' 和结构调用 DLL (C++ -> VB.NET)

c++ - Boost C++ 序列化一个 char *

c++ - 使用boost库c++在目录和子目录中搜索文件

python - 在 OpenCV+Python 中使用 knnMatch 时出错

ruby-on-rails - Rails + Redis 订阅返回错误

c++ - 队列返回 pair.first 的错误值

c++ - 如何在 VS 2010 中生成均匀分布的随机数?

c++ - 如果时刻恰好在冬季结束时(非夏令时),日期/时间转换问题

c++ - boost 与 vector 成员函数的绑定(bind)

c++ - 将 char 类型转换为字符串时,代码始终返回 255 或 -1073741819