3

因此,由于他们以某种方式不接受搜索词“>>”,我在 Google 上找不到任何东西,我决定在这里问。

首先,不,我不是指按位移位运算符。这是不同的。我已经看到它出现在某些代码中,如果它是移位运算符,那将毫无意义。

cout << a;将是一个例子。我知道它会打印出一个,但是“<<”的定义是什么?

或者就我而言,我有一个类似的代码:

for(int index=0;index<n;index++)
    inputFile >> StringArray[index];

这是什么意思?

4

4 回答 4

7

移位运算符经常被重载以表示从流中读取值和向流中写入值。

编辑:更详细地说,C++ 允许您重载或更改几乎任何运算符的含义。<<and运算符被>>选择为重载以写入/读取数据源或接收器,因为它们在视觉上看起来像箭头或管道。除了使用什么运算符之外,移位位的共性为零。

于 2013-11-06T14:11:55.950 回答
1

这是关于写入或读取流。

查看此示例以获取实际示例:http ://www.cplusplus.com/doc/tutorial/files和http://www.umich.edu/~eecs381/handouts/filestreams.pdf ‎。

于 2013-11-06T14:17:13.227 回答
1

它们是按位移位重载运算符,通常称为“流运算符”,我不详细了解,但正如您所说,

cout<<a;

输出 a 的值,即将 a 的值放入屏幕上显示的输出流中。

在这种情况下

inputfile>>variable; 

您正在将文件中的数据读入变量中。

于 2013-11-06T14:15:28.573 回答
1

正如您所说,这些称为按位运算符。

但是,在 C++ 中,您可以重载这些运算符(实际上是任何运算符)来执行您希望它们执行的操作。这就是这里发生的事情。<<and在and对象>>中被重载,分别打印到流和从流中读取。ostreamistream

事实上,你可以重载任何运算符来对对象做任何你想做的事情。一个例子可以在这里找到。

干杯。

PS:围绕这些运算符的概念很容易可视化。当你写:

cout << "Hello world";

稍微想象一下,您可以说您将右侧的字符串“放置”到cout左侧的流中(因此左侧指向“箭头”)。同样,当您编写时:

std::string str;
cin >> str;

您可以想象您从cin左侧的流中提取一个字符串并将其“放入”str右侧的变量(因此向右指向“箭头”)。

于 2013-11-06T14:18:22.327 回答