C ++什么<<和>>用简单的术语表示

时间:2015-11-17 20:59:04

标签: c++ cout cin

当你做

时,在C ++中

int a;
std::cin >> a;
std::cout << a;
它打印出一个。 &lt;&lt;&lt;&lt;&lt;&lt;&lt;和&gt;&gt;在输入和输出时,请简单说明。我看到了类似问题的答案,并没有真正理解他们使用的行话。还有其他方法可以使用&lt;&lt;和&gt;&gt;?

4 个答案:

答案 0 :(得分:7)

它的语法糖。实际上叫做的是:

   //mode.php

   <?php

       header("Content-type: text/css; charset: UTF-8;");

       $mycolor = (isset($_GET['theColor'])) ? $_GET['theColor']: false;

    ?>

     .body{
           background-color: <?php echo $mycolor; ?>;
        }

现在,内置类型的这些运算符内部发生的事情很简单,很难解释。

粗略地说:

  • int a; operator>>(std::cin, a); operator<<(std::cout, a); 将其输入转换为字符/字节并发送 字节到其关联的设备,通常是终端。
  • operator<<从其关联设备读取文本/字节(例如, 键盘)并将它们转换为各自的内置类型 表示。

这示意性地如下所示:

enter image description here

答案 1 :(得分:0)

在C ++中>><<是二元运算符,如-+

它们通常意味着调用声明为

的函数
C operator << (A a, B b)

如果你想制作一个花哨的大整数类并给它移位运算符,你可以像任何其他运算符一样重载这个,你可以做任何你想做的事。

当你使用像std::cout这样的ostream时,它通常会调用一个带有这样签名的函数:

std::ostream & operator << (std::ostream &, const B & b)

这意味着,将第二个参数b写入作为第一个参数给出的流,并返回它。所以

std::cout << "a" << "b" << "c"

意味着像

output(output(output(std::cout, "a"), "b"), "c")

如果函数被赋予“常规”名称output而不是使用运算符重载。

std::cin类似,如果您想要更详细的信息,我需要提出更准确的问题。

答案 2 :(得分:0)

&#34; std :: cin&gt;&gt;一个;&#34; - 它转换为std :: istream&amp;的std :: istream的::运营商GT;&GT;(一); http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/

&#34; std :: cout&lt;&lt;一个;&#34; - 它转换为std :: ostream&amp;的std :: ostream的::运营商LT;≤(A); http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

答案 3 :(得分:0)

C ++使用Operator Overloading的概念,这意味着对于任何给定的对象,您可以通过调用任何给定的运算符来指定调用的函数。

其中一个经典示例是complex类,旨在处理复数。例如,您可以定义两个complex数字:

complex a(1,0.5); // 1+.5i
complex b(-2.5,1); // -2.5 + i

在没有运算符重载的编程语言中,你可以编写一个这样的add函数:

complex add(complex b) {
    return complex(r + b.r, i + b.i);
}

并像这样调用它:

complex c = a.add(b);//This technically invokes an operator overload on the '=' sign, but just bear with me.

但是,对于运算符重载,您可以编写如下函数:

complex operator+(complex b) {
    return complex(r + b.r, i + b.i);
}

并按照以下方式执行添加:

complex c = a + b;

在输出/输入流的情况下,他们已经定义了operator<<operator>>函数来对其对象执行专门的任务。因此,您可以调用cout << mynummynum将附加到流的末尾。