C++ stringstream

Rya*_*own 2 c++ string stringstream

执行此操作时,stringstream如何工作:

stringstream ss;
ss << "123" << "abc";
Run Code Online (Sandbox Code Playgroud)

它是否会创建一个一次性"123abc"字符串,或者它是否会连续执行两个字符串流操作?

我想复制那个功能,但没有重载我似乎使用两个参数,如上面的代码...

zda*_*dan 12

它相当于对<<运算符执行两个单独的函数调用:

(ss.operator<<("123")).operator<<("abc")
Run Code Online (Sandbox Code Playgroud)

所以是的,它会"连续"完成两项操作.


Naw*_*waz 5

实际上它等同于:

std::operator<<(std::operator<<(ss, "123"), "abc");
Run Code Online (Sandbox Code Playgroud)

请注意,没有成员函数const char*作为参数.它是一个非成员函数,ss作为第一个参数传递给它,并const char*作为第二个参数传递.函数返回std::ostream&然后再次传递给它.它更像是这样的:

print( print (ss, "123"), "abc"); //just for clarity
Run Code Online (Sandbox Code Playgroud)

这意味着有两个函数调用.替换printstd::operator<<.现在一切都会很清楚.

希望有所帮助.


另一个答案说:

(ss.operator<<("123")).operator<<("abc") //copied from other answer (wrong)
Run Code Online (Sandbox Code Playgroud)

是错的!这是错误的,因为它认为operator<<这需要const char*作为参数是一个成员函数是不是真的!