目录
- 1. 位移操作符(Bitwise Right Shift Operator)
- 2. 输入流操作符(Stream Extraction Operator)
- 3. 在 OpenCV 中的重载操作符
- 4. 在类中的重载操作符
- 总结
在 C++ 中,>>
是一个多功能的操作符,根据上下文的不同可以有不同的含义和用途。下面详细介绍其在各种场景中的用法。
1. 位移操作符(Bitwise Right Shift Operator)
在数值运算中,>>
是位移操作符,表示将一个数的二进制表示右移若干位。
示例:
int a = 8; // 二进制表示为 00001000
int b = a >> 2; // 右移两位,结果为 00000010,即 b = 2
- 用法:
x >> n
将x
的二进制位右移n
位。右移时丢弃低位,左侧用 0 填充(如果是有符号整数,右移时可能会保留符号位)。 - 用途:常用于快速除以 2 的幂或在二进制处理中对位进行操作。
2. 输入流操作符(Stream Extraction Operator)
在标准输入流和文件输入流中,>>
操作符用于从流中提取数据,常用于将数据从 std::cin
或 std::ifstream
等流对象中提取到变量中。
示例:
int x;
std::cin >> x; // 从标准输入读取整数并赋值给 x
- 用法:
istream >> variable
将从输入流中提取数据,并赋值给指定的变量。 - 用途:用于从输入流读取数据。
3. 在 OpenCV 中的重载操作符
在 OpenCV 中,>>
操作符被重载,用于将视频帧从 cv::VideoCapture
对象提取到 cv::Mat
对象中。
示例:
cv::VideoCapture capture("video.mp4");
cv::Mat frame;
capture >> frame; // 从视频捕获对象中读取一帧到 frame
- 用法:
VideoCapture >> Mat
将cv::VideoCapture
对象中的当前帧读取到cv::Mat
对象中。 - 用途:用于从视频文件或摄像头流中逐帧读取图像。
详细解释:
cv::VideoCapture
类代表视频文件或摄像头设备的捕获对象。cv::Mat
类代表一个二维图像矩阵。capture >> frame
表示从捕获设备或文件中读取下一帧,并存储到frame
中。如果视频结束或读取失败,frame
将为空。
4. 在类中的重载操作符
C++ 支持操作符重载,这意味着 >>
操作符可以在用户定义的类中进行重载,用于定义特定类型的输入行为。
示例:
class Point {
public:
int x, y;
friend std::istream& operator>>(std::istream& input, Point& p) {
input >> p.x >> p.y;
return input;
}
};
int main() {
Point p;
std::cin >> p; // 自定义的 >> 操作符从输入流中读取数据到 Point 对象 p 中
}
- 用法:通过重载,
>>
操作符可以用于读取自定义类型的数据,通常用于简化对象的输入处理。 - 用途:常用于用户自定义类,使其可以像内置类型一样通过输入流进行数据输入。
总结
>>
在 C++ 中具有广泛的用途,具体取决于上下文:
- 作为位移操作符时,用于二进制位的右移。
- 作为输入流操作符时,用于从流中提取数据。
- 在 OpenCV 中,重载用于从
VideoCapture
对象读取帧。 - 在用户定义的类中,可以重载以实现自定义的输入行为。
这种多样性使得 >>
操作符在不同场景下具有灵活而强大的功能。
标签:读取,C++,操作符,VideoCapture,重载,cv,输入 From: https://www.cnblogs.com/keye/p/18365749