14.4.2 其他ostream方法

    除了<<操作符外,ostream类中还定义了成员函数put和write,分别用于显示字符和字符串,其函数原形分别如下所示。


    ostream&put(char); ostream&write(const char*,int n);

    put函数的参数指明了要显示的字符,write函数的第1个参数提供了要显示的字符串的地址,第2个参数指明了要显示多少个字符。

    因为put函数和write函数都返回ostream类对象的引用,因此,put函数、write函数和<<操作符可组成链式输出,如示例代码14.7所示。

    代码14.7 ostream类中的put函数和write函数OstreamSample


    <————————————-文件名:example1407.cpp——————————————-> 01 #include<iostream> 02 using namespace std; 03 int main() 04 { 05 cout. put('x');//输出单个字符 06 cout. put('\n');//输出换行符 07 cout. put('h').put('e').put('\n');//链式输出 08 cout. put(61).put('\n');//int型参数也被解释为char 09 cout. write("Hello",3);//输出字符串,截断处理 10 cout. put('\n'); 11 cout. write("Nice to",7).write("meet you",9);//字符串也可以链式输出 12 cout. put('\n'); 13 cout. write("China",8).write("Beijing",3); 14 //当第2个参数大于字符串长度时,不会因为空字符而停止 15 cout. put('\n'); 16 cout. write("Excellent",3).put('z')<<endl;//链式 17 return 0; 18 }

    输出结果如下所示。


    x he = Hel Nice to meet you China Bei Excz

    【代码解析】代码第5~16行演示了如果通过标准输出流对象cout调用put函数和write函数的过程,对put函数来说,既支持字符类型,也支持可转换的int型等数值参数,如代码第8行的“cout.put(61)”输出的便是字符"=",对write函数来说,当第2个参数小于字符串的长度时,将对字符串进行截断输出,但若第2个参数大于字符串的长度,write函数不会因为遇到字符串结束的空字符就停止输出,而是继续从下一个内存单元中读取字符输出,直到达到第2个参数规定的数目,所以,代码第14行的“cout.write("China",8)”的输出结果并不确定,取决于编译器对内存的安排,本例中输出了“China”(3个空格)的形式。从代码14.7中还可以看出,put、write和<<可以组合成链式输出。