2016-09-19 57 views

回答

3

您可以使用shell來修改和重定向程序的輸出:

my_program | tail -n 50 > my_file 

使用簡單的重定向>如果要截斷的文件或雙重定向>>如果你想將其追加。

注:

此方法僅如果您需要重定向標準錯誤把2>&1my_program

1

如果你真的想這樣做,在C++將stdout,你可以通過在線控制檯輸出線存儲在程序運行時將其放入容器中,並在需要時將最後50行寫入文件。

爲您的輸出功能編寫封裝,並且每次將控制檯打印到控制檯時,都將其添加到std::queue。如果這使得您的隊列大於50個元素,請彈出最老的隊列(只需撥打pop())。

class Logger { 
    static std::queue<string> lastFifty; 

    public static void log(const std::string& str) { 
     lastFifty.push(str); 
     if (lastFifty.size() > 50) { 
      lastFifty.pop(); 
     } 
     std::cout << str; 
    } 

    public static void dumpToFile(std::ofstream& file) { 
     while (!lastFifty.empty()) { 
      file << lastFifty.pop(); 
     } 
    } 
} 
相關問題