typedef int - >整数。我可以做cout->在C++中打印吗?

问题描述:

如何使用typedef将整数或char等变量定义为字符。有没有什么办法可以做到这一点,所以我可以在C++中使用Print而不是cout?typedef int - >整数。我可以做cout->在C++中打印吗?

+2

'cout'不是一种类型。 'int'和'char'都不是函数。 –

+1

'cout'也不是一个函数。 – emlai

+0

对不起。那是我的不好。我的意思是变量 – Rohan

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

一般来说,您有

  • 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