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);
    }
}

 

相關文章
相關標籤/搜索