[英]Can we rename cout, endl keyword in cpp?
由於 typedef 可以更改類型的名稱,而 define 可以為值和函數創建別名,有沒有辦法更改 cout、endl 等的名稱?
我們可以在 cpp 中重命名 cout、endl 關鍵字嗎?
cout
和endl
都不是 C++ 中的關鍵字。 它們是在標准庫的std
命名空間中聲明的名稱。 前者是一個變量,后者是一個 function 模板。
您不能“重命名”變量或 function 模板,就像您可以重命名類型一樣,但是就像您可以為類型創建別名一樣,您基本上可以使用引用為變量實現相同的目的:
auto& some_name = std::cout;
對於 function 模板,一個選項是編寫一個包裝器 function 模板:
template<class CharT, class Traits>
auto&
endl_wrapper(std::basic_ostream<CharT, Traits>& os)
{
return std::endl(os);
}
避免使用不必要的別名混淆程序。
有兩種方法可以做到這一點。 在 C++ 意義上,您可以使用std::ostream
:
#include <iostream>
std::ostream& alias = std::cout;
或者,以更好的方式,使用對auto
的引用讓編譯器決定正確的類型。
auto& print = std::cout;
一些重要的注意事項:
您不能using
語句創建std::cout
、 std::endl
等的別名。
由於std::endl
是模板 function 而不是類型,因此無法使用對自動類型的引用來推斷。
OTOH,您可以使用#define
語句(類似C):
#include <iostream>
#define print std::cout <<
#define end << std::endl
.
.
print "Hello world!" end;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.