我仍然对ostream和amp;之间的区别感到困惑。在c ++中写入(const char * s,streamsize n),在c ++中写入cout 第一个函数将s指向的数据块(大小为n个字符)写入输出缓冲区。按顺序写入字符,直到写入n。 而cout是类ostream的一个对象,表示标准输出流。它对应于cstdio流标准输出。 任何人都可以清楚地看出这两个功能之间的差异。
答案 0 :(得分:14)
ostream& write ( const char* s , streamsize n );
是无格式输出函数,写入的内容不一定是c-string
,因此在数组s
中找到的任何空字符都会复制到目标并且不要结束写作过程。
cout
是类ostream的对象,表示标准输出流。
它可以使用ostream::operator<<
成员函数使用插入运算符write
或无格式数据将字符写为格式化数据。
答案 1 :(得分:6)
您问的是类成员函数和类的实例之间有什么区别? cout
是ostream
而 是write()
方法。
关于cout << "Some string"
和cout.write("Some string", 11)
之间的差异:它也是一样的,<<
可能会慢一点,因为write()
可以优化,因为它知道长度提前的字符串。另一方面,<<
看起来不错,可以用于许多类型,例如数字。您可以撰写cout << 5;
,但不能cout.write(5)
。
答案 2 :(得分:1)
cout不是一个功能。就像你说的那样,它是类ostream的一个对象。作为该类的一个对象,它拥有write函数,可以这样调用:
cout.write(source,size);
答案 3 :(得分:1)
“在二进制文件中,使用提取和插入运算符(&lt;&lt;&gt;&gt;)输入和输出数据以及像getline这样的函数效率不高,因为我们不需要格式化任何数据和数据可能不会使用文本文件使用的分隔码来分隔元素(如空格,换行符等)。
文件流包括两个成员函数,专门用于按顺序输入和输出二进制数据:写入和读取。第一个(写)是由ofstream继承的ostream的成员函数。 read是ifstream继承的istream的成员函数。类fstream的对象都有成员。他们的原型是:
写(memory_block,size); read(memory_block,size); “
答案 4 :(得分:1)
哦,男孩!有机会解决一个问题。
从您的问题来看,我认为您是Java或Python程序员,而且绝对不是初学者。
您不了解C ++可能是唯一一种允许程序员将作为类成员和通用接口的一部分实现内置于操作符中的原始语言。
在Java中,你永远走不下去
class Money
{
int operator + (int cash) { return this.cash + cash; }
void operator << () { System.out.println(cash); }
int cash;
}
public class Main_
{
public static void Main(String [] args)
{
Money cashOnHand;
System << cashOnHand;
}
}
但是cpp可以起到很大的作用。 std :: ostream类实现了流运算符,但还实现了执行原始二进制操作的常规写函数。
答案 5 :(得分:0)
没有功能ostream& write ( const char* s , streamsize n )
。也许你指的是成员函数ostream& ostream::write ( const char* s , streamsize n )
?
.write()
函数称为raw(或 unformatted )输出。它只是将一系列字节输出到流中。
全局变量cout
是类ofstream
的一个实例,并且具有.write()
方法。但是,cout
通常用于格式化输出,例如:
string username = "Poulami";
cout << "Username: '" << username << "'." << endl;
许多不同的类型都有ostream& operator<<(ostream& stream, const UserDefinedType& data)
,可以重载以丰富ofstream
的词汇量。
答案 6 :(得分:0)
我同意 Alok Save !之前有一个小问题,我仔细搜索了问题并仔细阅读了答案。
也许换句话说, cout 是 ostream 的对象,但写只是提供的功能。所以 cout 有编程人员使用的方法:一个是成员函数,另一个是运算符(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;