[英]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.