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)
所以是的,它会"连续"完成两项操作.
实际上它等同于:
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)
这意味着有两个函数调用.替换print为std::operator<<.现在一切都会很清楚.
希望有所帮助.
另一个答案说:
(ss.operator<<("123")).operator<<("abc") //copied from other answer (wrong)
Run Code Online (Sandbox Code Playgroud)
是错的!这是错误的,因为它认为operator<<这需要const char*作为参数是一个成员函数是不是真的!