Can运算符<<用于设计我们自己的输出显示方式
Can operator << be used to design our own way of giving output display
类似
std::cout<<type_variable
调用cout并将该变量或内容打印在屏幕上。
如果我想设计自己的方式来处理如何输出呢。我用函数创建了自己的输出方式,比如
std::cout<<string(5,'-')<<std::endl;
std::cout<<"name"<<std::endl;
std::cout<<string(5,'-')<<endl;
但是,我希望有操作员"<<"或类似人员来提供显示。并创建操作员以形式输出
out<<some_output
我找不到这个问题的答案,对编程的研究似乎不够充分,但这可能吗?
简单,您可以制作一个操纵器:
std::ostream& custom_output(std::ostream& os)
{
return os << std::string(5, '-') << std::endl
<< "name" << std::endl
<< std::string(5, '-') << std::endl;
}
然后你可以这样写:
std::cout << custom_output;
希望这能有所帮助!
你可以像其他答案所说的那样做。这是另一种方式:
class X
{
public:
X(std::string const& _name) : name(_name) { }
friend std::ostream& operator<<(std::ostream& os, const X& x)
private:
std::string name;
};
std::ostream& operator<<(std::ostream& os, const X& x)
{
return os << x.name;
}
int main()
{
X x("Bob");
std::cout << x; // "Bob"
}
自定义以供自己使用。
相关文章:
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 我们可以访问一个不存在的联盟的成员吗
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 没有为自己的结构调用列表推回方法
- 呼叫运营商<<临时
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- 当我们push_back元素时,std::vector 什么时候会放大自己?
- 如何在 c++98 中定义我们自己的 nullptr
- 编写我们自己的比较操作
- 为什么我们需要维护自己的矩阵来转换游戏对象
- 我们如何让C++程序自己修复超出范围的数组索引
- 没有明显的时间戳与时区偏移类型的c++.卷我们自己的
- Ceil函数:我们如何自己实现它
- 为什么我们需要写一个自己的复制程序,而我们可以使用复制shell命令
- 如何在Thrift客户端中使用我们自己的I/O框架
- 如何编译我的c++库在纯Android Studio的方式(不指定任何.mk文件在我们自己)
- 可以将std::find函数用于我们自己的类
- 如何自定义cin来读取我们自己的格式
- Can运算符<<用于设计我们自己的输出显示方式