2015-11-01 104 views
0

如何使用typedef將整數或char等變量定義爲字符。有沒有什麼辦法可以做到這一點,所以我可以在C++中使用Print而不是cout?typedef int - >整數。我可以做cout->在C++中打印嗎?

+2

'cout'不是一種類型。 'int'和'char'都不是函數。 –

+1

'cout'也不是一個函數。 – emlai

+0

對不起。那是我的不好。我的意思是變量 – Rohan

回答

3

std::cout是一個對象。

您可以使用參考給它另外一個名字:

std::cout << "Hello "; 

std::ostream& Print = std::cout; 
Print << "world\n"; 

但是,恩,請不要。大多數std::cout是和現在很好理解;將它隱藏在另一個名稱後面,只是爲了混淆而引入混淆。

+0

我可以在頭文件中定義我自己的用途嗎? – Rohan

+4

@Rohan:當然,但這不是個好主意。能夠編寫'Print'而不是'std :: cout'並沒有真正的好處 - 它是誤導性的,因爲你的'Print'實際上沒有打印任何東西(這是'''操作符可以實現的) 。學習如何以傳統方式做事情會更好。我認爲,問題在於你發現'std :: cout << ...'不清楚。解決辦法不是用你發現更清楚的其他東西來代替它;這是要學習標準成語,以至於清楚*你*。 –

+0

好的!非常感謝。這只是爲了可讀性。我喜歡我的代碼看起來都很漂亮:) – Rohan

0

一般來說,您有

  • using(或typedef),用於類型別名
  • 爲變量別名
  • 內聯函數(或宏),用於函數引用別名

所以一個內聯函數可能是一個好的改變原生你的情況(Print聽起來像一個函數):

template<typename T> 
inline void Print(T const& stuff) 
{ 
    std::cout << stuff; 
} 

int main() 
{ 
    Print("Hello"); 
    Print(42); 
    Print("world"); 
} 

現在你可以如通過更改代碼中的單行,輕鬆地更改所有使用Print打印到std::cerr而不是std::cout的所有內容。

+0

我可以在頭文件中定義我自己的用途嗎?這只是爲了便於閱讀。 – Rohan

+0

是的,你可以。爲什麼不?雖然請注意,爲了將函數定義放在頭文件中,需要標記爲「inline」。否則,該定義需要位於.cpp文件中,並且只有其聲明才能出現在標題中。 – emlai

+0

請記住,如果您嘗試傳入'std :: endl',則此方法將失敗。 – fuzzything44

相關問題