由于谷歌搜索不接受“>>”这个搜索词,我无法在谷歌上找到任何相关信息,所以决定在这里提问。
首先,我不是指位移运算符。这是不同的。我在某些代码中看到过它的出现,如果它是一个位移运算符,那么它就没有意义。
例如:cout << a;
。我知道它会输出a,但是“<<”的定义是什么?
或者在我的情况下,我有一个类似于这样的代码:
for(int index=0;index<n;index++)
inputFile >> StringArray[index];
这是什么意思?
由于谷歌搜索不接受“>>”这个搜索词,我无法在谷歌上找到任何相关信息,所以决定在这里提问。
首先,我不是指位移运算符。这是不同的。我在某些代码中看到过它的出现,如果它是一个位移运算符,那么它就没有意义。
例如:cout << a;
。我知道它会输出a,但是“<<”的定义是什么?
或者在我的情况下,我有一个类似于这样的代码:
for(int index=0;index<n;index++)
inputFile >> StringArray[index];
这是什么意思?
位移运算符经常被重载以表示从流中读取值和写入值。
编辑:更详细地说,C++允许你重载或改变几乎任何操作符的意义。选择重载<<
和>>
运算符来写入/读取数据源或数据汇,因为它们在视觉上看起来像箭头或导管。除了使用的操作符外,与位移位毫无共同点。
这是关于流的读写。
这里有一个实际的例子:http://www.cplusplus.com/doc/tutorial/files 和 http://www.umich.edu/~eecs381/handouts/filestreams.pdf。
正如你所说,这些被称为位运算符。
然而,在C++中,你可以重载这些运算符(实际上是任何运算符),以执行你想要的操作。这就是这里发生的事情。 <<
和 >>
在 ostream
和 istream
对象中被重载,分别用于从流中打印和读取。
实际上,你可以重载任何运算符来在对象上执行任何你想要的操作。一个例子可以在 这里 找到。
干杯。
PS:这些运算符周围的概念很容易被可视化。当你写:
cout << "Hello world";
稍加想象,你可以说你把右边的字符串“放入”左边的cout
流中(因此是向左的箭头)。同样地,当你写:
std::string str;
cin >> str;
cin
流中提取一个字符串,并将其“放”在右边的str
变量中(因此是指向右的箭头)。cout<<a;
输出a的值,即将a的值放入输出流中,在屏幕上显示出来。
而在这种情况下
inputfile>>variable;