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