【问题标题】:C++ << >> operatorsC++ << >> 运算符
【发布时间】:2011-06-15 18:44:21
【问题描述】:

例如,我可以使用&lt;&lt; 运算符输入我的姓名,如下所示:

std::cout<<"My name is: "<<name<<std::endl;

Wikipedia 上,它提到了关于&lt;&lt;&gt;&gt; 的以下内容:

在 iostreams 的上下文中,作者通常将​&lt;&lt;​&gt;&gt; 分别称为“put-to”或“流插入”和“get-from”或“流提取”运算符。

在上面的示例代码中,&lt;&lt; 不是在执行串联吗? 连接在 C++ 中有特殊的运算符吗?

谢谢。

【问题讨论】:

    标签: c++ operators concatenation


    【解决方案1】:

    C++ 中没有任何东西有 special 运算符。 std::ios(其派生)误用operator&gt;&gt;operator&lt;&lt; 是为了提供一种简单的方式来执行流操作:这两个操作符在 C++ 中具有不同的语义。

    用于连接两个std::string 的运算符是operator+(但我认为在这种情况下他们没有误用它:两个字符串之间的operator+ 正在做我想做的事期待)。

    【讨论】:

    • +1,还应该注意,在这种情况下,&lt;&lt; 运算符返回作为其第一个参数的流,这允许您链接它们。
    【解决方案2】:

    在这种情况下,实际上并没有发生串联。相反,每个字符串依次写入输出流。在这种情况下,该流恰好是标准输出。

    【讨论】:

      【解决方案3】:

      如果要连接,则应使用operator +。但是正如@tsellon 所说,从技术上讲,您的示例不是串联 - 它是按顺序写入流中。也许差异看起来很抽象,但含义却非常真实。

      【讨论】:

        【解决方案4】:

        在 iostreams 的上下文中,operator &lt;&lt; 将数据插入到流中。流对它的作用是一个完全不同的故事。它可以连接字符串(std::stringstream 就是这种情况),但它也可以做一些完全不同的事情。

        【讨论】:

          猜你喜欢
          • 2012-11-26
          • 2013-10-23
          • 2021-09-02
          • 1970-01-01
          • 1970-01-01
          • 2017-03-29
          • 2016-02-19
          • 1970-01-01
          相关资源
          最近更新 更多