use*_*138 10 c++ iostream class object
如果cout是ostream类的对象,那么为什么我们不能声明我们自己的对象,比如说来自同一个类的'out'.即,不是以下代码应该工作?
#include<iostream>
using namespace std;
int main()
{
ostream out;
out<<"something";
}
Run Code Online (Sandbox Code Playgroud)
或者其他
#include<iostream>
using namespace std;
int main()
{
ostream_withassign out;
out<<"something";
}
Run Code Online (Sandbox Code Playgroud)
流对象需要缓冲区才能将数据发送到外部设备.标准输出流对象,std::cout使用缓冲区初始化,封装传输到输出出现的位置.这是一个人为的例子:
std::ostream cout(/* buffer */);
Run Code Online (Sandbox Code Playgroud)
要使自己的流对象伪装成标准流对象,您只需将缓冲区传递std::cout给其构造函数即可.请注意,我不建议在实践中这样做:
std::ostream copy(std::cout.rdbuf()); // Note: not a *real* copy
copy << "Hello World";
Run Code Online (Sandbox Code Playgroud)
你没有设置ostream对象(这个流输出到什么),当然不能使用它。
http://www.cplusplus.com/reference/iostream/ostream/ostream/
即
// ostream constructor
#include <iostream>
#include <fstream>
using namespace std;
int main () {
filebuf fb;
fb.open ("test.txt",ios::out);
ostream os(&fb);
os << "Test sentence\n";
fb.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)