我仍然对C++中的ostream& write ( const char* s , streamsize n ) 和cout之间的区别感到困惑。
第一个函数将指向s的数据块写入输出缓冲区,大小为n个字符。字符按顺序写入,直到写入n个为止。
而cout是一个表示标准输出流的ostream类对象。它对应于cstdio流stdout。
有人能清楚地说明这两个函数之间的区别吗?
我仍然对C++中的ostream& write ( const char* s , streamsize n ) 和cout之间的区别感到困惑。
第一个函数将指向s的数据块写入输出缓冲区,大小为n个字符。字符按顺序写入,直到写入n个为止。
而cout是一个表示标准输出流的ostream类对象。它对应于cstdio流stdout。
有人能清楚地说明这两个函数之间的区别吗?
ostream& write ( const char* s , streamsize n );
一个未格式化输出函数所输出的内容不一定是,因此,数组中的任何空字符都会被复制到目标位置,并且不会终止写入过程。
cout
是表示标准输出流的ostream类的对象。它可以使用插入运算符ostream::operator<<
将字符作为格式化数据写入,也可以使用成员函数write
将字符作为未格式化数据写入。
cout不是一个函数。就像你所说的,它是一个ostream类的对象。作为该类的对象,它拥有write函数,可以这样调用:
cout.write(source,size);
没有函数ostream& write ( const char* s , streamsize n )
。也许您指的是成员函数ostream& ostream::write ( const char* s , streamsize n )
?
.write()
函数被称为原始(或未格式化)输出。它简单地将一系列字节输出到流中。
全局变量cout
是类ofstream
的一个实例并具有.write()
方法。但是,cout
通常用于格式化输出,例如:
string username = "Poulami";
cout << "Username: '" << username << "'." << endl;
ostream& operator<<(ostream& stream, const UserDefinedType& data)
,可以重载它来丰富 ofstream
的词汇量。哦,伙计!有机会解决一个问题。
从您的问题中我感觉您是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;
}
}
我同意 Alok Save 的观点!之前我搜索了这个问题并仔细阅读了答案。
换句话说,cout 是 ostream 的一个对象,而 write 只是提供的一个函数。因此,程序员可以通过两种方式使用 cout:一种是作为成员函数,另一种是通过 operator(<<) 使用。
write
和ostream::operator <<
进行比较? - stakx - no longer contributing