C++中的<<和>>

Jac*_*own 3 c++

我不太明白这意味着什么......我只是从我非常非常基本的Python体验中学习C++ ......所以这可能是一个非常愚蠢的问题.我的问题是......说你有经典的"Hello World"计划,你就有了这条线:

cout<<"Hello World!"<<endl;
Run Code Online (Sandbox Code Playgroud)

<< mean ...是什么...因为我只是在C中使用输入,看到你做了类似的事情:

int i;
cin>>i;
Run Code Online (Sandbox Code Playgroud)

而且我注意到它有>>而不是<<而且我已经读到那些是按位的变化......我并不完全明白那些是什么......但我认为这可能会有所不同......帮助...提前致谢

Tra*_*kel 8

在Python中,您可以实现__lshift____rshift__执行您想要的任何操作.在C++中,它是相同的 - 虽然经典的意思是按位向右移位和向左移位,你可以使它做任何你想做的事情.

这可能是C++中最明显违反"合理"运算符重载的行为之一,但这只是如何std::ostreamstd::istream工作.对于那里的所有C++爱好者(包括我自己),我为这个奇怪的操作员选择道歉.只需将其视为数据流入的方向(cout << foofoo放入cout,cin >> foocin置于foo中),微笑并快乐.从一个新人,真的没有任何意义,但喝C++库尔援助,你会OH YEAH了.相信我.

  • 你说这种运营商的选择对新手来说没有意义.我不同意.我教过200多名新人,其中没有一个人曾经反对过.如果你想要一些对新手没有意义的东西,那就是*转移位*. (3认同)
  • @Rob,也许他意味着C++的新手,他们是来自另一种语言的老人,其中位移操作符总是一个移位操作符.但是,不能和你争论,关于它让完全新手感到困惑.前几天我看到一个SO答案,如果lhs是小数,有人认为`>> 3`移动了3位小数. (2认同)