2011-08-08 69 views
4

我仍然对C++和C++中的write(const char * s,streamsize n)之间的区别感到困惑第一个函数将s指向的数据块写入大小为n个字符,放入输出缓冲区。字符被顺序写入,直到n被写入。 而cout是表示标准输出流的类ostream的对象。它对应于cstdio流标准输出。 任何人都可以清楚地展示这两种功能之间的差异。cout和C++之间的区别

+0

'而cout是表示标准输出流的类ostream的一个对象。正如你所说,第二个是一个班级,并没有功能。 – Nobody

+2

你真的把苹果与桔子进行比较(也就是对一个类实例的函数)。你是否想把'write'与'ostream :: operator <<'进行比较? – stakx

回答

13
ostream& write (const char* s , streamsize n); 

是一个未格式化输出功能和怎样写的不一定是c-string,因此阵列s中发现的任何空字符复制到目标并没有结束写入过程。

cout类ostream的对象,它表示标准输出流。
它可以写字符无论是作为使用例如插入运算符ostream::operator<<或作为无格式数据使用write成员函数格式化数据

1

cout不是功能。就像你说的那样,它是class ostream的一个对象。而作为这个类的一个对象,它拥有的写入功能,可以这样调用:

cout.write(source,size); 
+0

thanx现在很清楚 – Poulami

4

你问的是什么类成员函数和类的实例之间的差异? coutostream a write()方法。

至于cout << "Some string"cout.write("Some string", 11)之间的区别:它确实是相同的,<<可能是微小的慢一点,因为write()可以,因为它知道字符串提前长度进行优化。另一方面,<<看起来不错,可用于许多类型,如数字。您可以写入cout << 5;,但不能写入cout.write(5)

+0

ok了!! thanx – Poulami

0

“在二进制文件中,使用提取和插入操作符(< <和>>)和函数(如getline)输入和输出数据效率不高,因为我们不需要格式化任何数据,并且数据可能不会使用文本文件用于分隔元素(如空格,换行符等)的分隔代码

文件流包含两个成员函数,专门用于依次输入和输出二进制数据:第一个(第一个write)是ofstream继承的ostream的成员函数,read是isstream的成员函数,由ifstream继承,fstream类的对象有两个成员,它们的原型如下:

write(memory_block,size); read(memory_block,size); “

来自:http://www.cplusplus.com/doc/tutorial/files/

0

没有功能ostream& write (const char* s , streamsize n)。也许你指的是成员函数ostream& ostream::write (const char* s , streamsize n)

.write()函数被称为raw(或未格式化的)输出。它只是将一系列字节输出到流中。

全局变量coutofstream类的一个实例并具有.write()方法。然而,cout通常用于格式化输出,如:

string username = "Poulami"; 
cout << "Username: '" << username << "'." << endl; 

许多不同类型的具有ostream& operator<<(ostream& stream, const UserDefinedType& data),这也可以被重载丰富ofstream的词汇。

0

我同意Alok保存!一个小孩之前,我仔细检查了问题并仔细阅读了答案。

也许在其他的字,COUTostream的的对象,但仅仅是提供的功能。所以cout有编码器使用的方法:一个是作为成员函数,另一个是由运算符(< <)使用。

相关问题