在使用 cout 和 cin 时,“<<”和“>>”运算符在做什么,为什么要使用它们?
When using cout and cin, what are the "<<" and ">>" operators doing and why do we use them?
例如:
int age;
cin >> age;
cout << "You are " << age << " years old!" << endl;
为什么我们在这里使用“<<”和“>>”运算符?他们在做什么?我有点了解位移位,但我不明白这里是如何工作的。
这是运算符重载。流 类 的位移运算符被重载以服务于不同的目的(读取和写入流)。参见:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
它们被称为流插入运算符(<<
)和流提取运算符(>>
).
这些运算符与左右位移运算符相同(尽管它们的名称不同)。移位运算符被重载,因此当左侧是流时,它们会读取或写入该流。
它们就像任何函数调用一样 - 它的工作方式如下:
leftShift(leftShift(leftShift(leftShift(cout, "You are "), age), " years old!"), endl);
除了调用函数 operator<<
而不是 leftShift
。
严格来说,一个名为 leftShift
的函数没有理由必须进行左移,同样,一个名为 operator<<
的函数也没有理由必须进行左移。
>>
和 <<
已作为流函数重载,例如:
std::ostream & operator << (std::ostream &, int)
(及其他)
这样(在这种情况下)当使用 cout << 10 时,它会调用将打印值的重载函数。
除了使用相同的运算符“<<”和“>>”之外,它与位移无关。
例如:
int age;
cin >> age;
cout << "You are " << age << " years old!" << endl;
为什么我们在这里使用“<<”和“>>”运算符?他们在做什么?我有点了解位移位,但我不明白这里是如何工作的。
这是运算符重载。流 类 的位移运算符被重载以服务于不同的目的(读取和写入流)。参见:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
它们被称为流插入运算符(<<
)和流提取运算符(>>
).
这些运算符与左右位移运算符相同(尽管它们的名称不同)。移位运算符被重载,因此当左侧是流时,它们会读取或写入该流。
它们就像任何函数调用一样 - 它的工作方式如下:
leftShift(leftShift(leftShift(leftShift(cout, "You are "), age), " years old!"), endl);
除了调用函数 operator<<
而不是 leftShift
。
严格来说,一个名为 leftShift
的函数没有理由必须进行左移,同样,一个名为 operator<<
的函数也没有理由必须进行左移。
>>
和 <<
已作为流函数重载,例如:
std::ostream & operator << (std::ostream &, int)
(及其他)
这样(在这种情况下)当使用 cout << 10 时,它会调用将打印值的重载函数。
除了使用相同的运算符“<<”和“>>”之外,它与位移无关。