Boost学习笔记(六) progress_display注意事项

progress_display能够用做基本的进度显示,但它有个固有的缺陷:没法把进度显示输出与程序的输出分离。ios

  这是由于progress_display和全部C++程序同样,都向标准输出(cout)输出字符,若是使用progress_display的程序也有输出操做,那么progress_display的进度显示就会一片混乱。spa

  一个解决办法是每次显示进度时都调用restart()从新显示进度刻度,而后用operator+=来指定当前进度,而不是简单的调用operator++rest

#include <boost\timer.hpp>
#include  <boost\progress.hpp>
#include <boost\progress.hpp>
#include <vector>
#include <fstream>
#include <boost\static_assert.hpp>
#include <iostream>
using namespace boost;
using namespace std;

int main()
{
    vector<string> v(100,"aaa");  //一个字符串向量
    
    v[10]="";
    v[23]="";

    ofstream fs("c:\\test.txt"); //文件输出 流
    progress_display pd(v.size());  //声明一个progress_display对象,基数是v的大小

    vector<string>::iterator pos;  //迭代器
    //开始写入文件
    for(pos=v.begin();pos!=v.end();++pos)
    {
        fs<<*pos<<endl;
        ++pd;
        if(pos->empty())
        {
            cout<<"null string #"<<(pos-v.begin())<<endl;
        }
        pd.restart(v.size());
        pd+=(pos-v.begin()+1);
    }
}

 

相关文章
相关标签/搜索