technique/pattern cin/cout 使用什么允许例如输出 << x << y?

What technique/pattern does cin/cout use allowing e.g. cout << x << y?

在C++中,我们通常使用很多<<操作符输出到控制台,如下所示:

cout << "x = " << x; // Output, for ex: x = 5

我又知道每个 << 运算符 return cout,代码应该类似于:

some_class& do_some_thing(int x) {
    // process or print x
    return *this;
}

但我不知道这种技术或模式叫什么,在什么情况下我们应该使用它?

是否应该在我工作中使用的其他编程语言(例如 C#)上实施此技术。

叫做Method Chaining. As an example, there's a boost library that provided a chaining way of assigning into a container before brace-initialization came around (Boost.Assignment):

vector<int> v; 
v += 1,2,3,4,5,6,7,8,9;

typedef pair< string,string > str_pair;
deque<str_pair> deq;
push_front( deq )( "foo", "bar")( "boo", "far" ); 

不过,通常情况下,您会在其他语言中更多地看到它来做诸如提供 fluent interface 之类的事情。除了流媒体之外,我个人在 C++ 中并没有看到太多。