cout/cin究竟是什么? 我知道java,现在想学习C++。我不明白什么是cout(字符输出流)和cin(字符输入)。这些是全局变量吗?那为什么 "My message">>cout;

cout/cin究竟是什么? 我知道java,现在想学习C++。我不明白什么是cout(字符输出流)和cin(字符输入)。这些是全局变量吗?那为什么 "My message">>cout;,c++,C++,不起作用?但是 cout<<"My message"; cout将箭头视为流。>表示输入流 所以cout>a方法要求用户输入变量a cout也可以像这样使用“+”例如,您可以像这样向一个流添加更多字符串 cout>b;将要求用户为每个变量输入两次,每次一个cout是类std::ostream的一个实例,是的,它是一个全局变量。但是操作符>>(char*,ostream&os)尚未由相关标头声明,因此“我的消息”>>无法将给出一个类似“找不到运算符>>的错误,该运算符接受参数cons

不起作用?但是

cout<<"My message";

cout将箭头视为流。>表示输入流

所以cout>a方法要求用户输入变量a

cout也可以像这样使用“+”例如,您可以像这样向一个流添加更多字符串


cout>b;将要求用户为每个变量输入两次,每次一个

cout
是类
std::ostream
的一个实例,是的,它是一个全局变量。但是
操作符>>(char*,ostream&os)尚未由相关标头声明,因此
“我的消息”>>无法将给出一个类似“找不到运算符>>的错误,该运算符接受参数const char*和std::ostream”(可能还有更多的错误,因为有时编译器会被这类事情弄糊涂)

cin
是相同的东西,除了
std::istream

如果你真的想搞乱别人的脑袋,你可以:

template<typename T>
std::ostream& operator>>(T x, std::ostream& os)
{
   os << x;
   return os;
}
模板
标准::奥斯特雷姆和运营商>>(TX,标准::奥斯特雷姆和运营商)
{

os
std::cout
std::cin
确实是全局变量。您的代码不会编译,因为这不是语言的工作方式。您必须将流放在左侧,然后是运算符,然后是流式输入/输出的变量。(对于输出,您可以使用文字、表达式以及变量。)iostream是一个头文件,其中包含处理控制台输入和输出操作的类。这就像在头文件中为处理控制台输入操作的输入类说“cin”时创建了一个对象。关于“cout”也可以这样说其中,正在从处理头文件中控制台的输出操作的类创建对象

当你考虑“CIN”时,设想创建一个连接到控制台和程序的管道和一个对象“CIN”,从你的键盘提供的控制台输入你的输入并将它们倾倒到程序中,这就是你可以看到“>”的原因。操作符用于cin,您可以找到与管道的类比,在该管道中,操作符负责指定对象“cin”的方向


而对于“cout”,想象一下创建一个连接到控制台和您的程序的管道,以及一个对象“cout”,从程序获取其输入并将其转储到控制台“准确地说,非常有趣,+1更具体地说,cout是输出类的一部分,cin是输入类的一部分。例如:
std::string str;std::cout>str;std::cout这里有一个简单的描述,您可以从以下开始:一个简单的谷歌搜索可以找到您的答案。