在讲到string对象的读写的时候,有这么一段话:
输入与输出操作的行为与内置类型操作基本相似。尤其是,这些操作符返回左操作数作为运算结果。因此,我们可以把多
个读操作或多个写操作放在一起:
string s1,s2;
cin>>s1>>s2; //read first input into s1,second into s2
cout<<s1<<s2<<endl; //write both stringsC/C++
请问:这段话是啥意思?
先谢谢了
------解决方案--------------------------------------------------------
因为ostream& operator << (ostream &os, const string &);
cout<<s1<<s2<<endl
等于
operator << (operator << (cout, s1), s2 );
------解决方案--------------------------------------------------------
ostream operator<<(ostream &,class T),这个函数返回的类型还是一个ostream类的对象。<<作为流操作时是一个二元操作符,其中ostream的对象作为左操作符,其他对象作为右操作符。由于<<函数返回的仍是一个ostream对象,因此可以连续输出。istream类似。
------解决方案--------------------------------------------------------
由于string类里面已经重载了<< >> 这两个操作符,
ostream& operator<< (const ostream& out)
关键在于返回值这里,返回的是一个ostream类的对象的引用。
因此cout << s1 << s2 << endl;
<=> (cout << s1)结果返回一个新的ostream对象的引用,然后这个引用就可以继续
输出s2,再返回一个引用,再输出endl,遇到分号,结束输出。