2013-02-01 29 views
2

我想讓cout每當我調用它時總會打印額外的字符串(在上面和下面)。對我來說實際上很奇怪,因爲我主要使用Java和C#。 編輯:也許我們可以定義「y」字符串或類似的東西的其他值?如何在C++中重載cout行爲

代碼:

#include <iostream> 
int main(){std::cout<<"y\n";} 

結果(打印):

x 
y 
z 

我不想改變int main()方法只是也許重寫<<爲字符串類型?

或MAYBE 使cout調用其他方法?

+1

您不能爲標準類型重載'operator <<'。 –

+0

@meh也許重載字符串運算符會有幫助嗎? – Yoda

回答

6

我不認爲你可以用cout來做到這一點。你可以做的是創建一個簡單的I/O包裝器,它可以進行額外的打印,然後調用cout來完成真正的工作。

+0

或者替換couts streambuf來做到這一點 – PlasmaHH

+1

@PlasmaHH它無法分辨調用操作符<<的末尾在哪裏。 –

+0

對於OP,您還需要使用移動語義和析構函數在''''操作字符串的末尾執行此操作,而不是在每個操作後執行此操作。 –