Dan*_*Dan 2 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);
}
Run Code Online (Sandbox Code Playgroud)
我在运行时在执行boost存档行时遇到未处理的异常:
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::archive::archive_exception> >
Run Code Online (Sandbox Code Playgroud)
以下行有误:
std::ofstream ofs("c:\test");
Run Code Online (Sandbox Code Playgroud)
如果你的文件被调用jest,编译器会发出警告(至少); 但是'\t'- 作为插入标签的逃脱,你的错误是未被捕获的.简而言之,不会创建该文件.您可以使用以下方法测试:
if (ofs.good()) { ... }
Run Code Online (Sandbox Code Playgroud)
现在,由于未创建文件,因此您没有传递有效的迭代器来boost::archive::text_oarchive引发异常.
试试这个:
std::ofstream ofs("c:\\test");
// --^ (note the extra backslash)
if (ofs.good()) {
boost::archive::text_oarchive oa(ofs);
// ...
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
PS:最后我不能阻止自己制作 - 如果你要使用的话
using namespace std;
Run Code Online (Sandbox Code Playgroud)
然后
ofstream ofs("c:\\test");
Run Code Online (Sandbox Code Playgroud)
够好了.当然,合格并不是错误ofstream,但它不是最好的编码风格.但是,你知道使用using namespace是坏事,不是吗?
PPS:谢谢 - sharptooth提醒我,\t给你一个标签!
| 归档时间: |
|
| 查看次数: |
10796 次 |
| 最近记录: |