C++中自定义类型使用标准输入cin输出cout

自定义类型的输出

  • 引言
  • 示例一
  • 运行结果
  • 示例二
  • 运行结果
  • 注意点

引言

当自己定义的数据为一些复杂数据,不再为基本数据类型,这时候要使用cout输出这些数据,就需要重载输出运算符<<,这样就可以使用cout来输出自定义的数据,相同如果想使用cin来输入自定义的类型,也得定义输入运算符重载函数。

示例一

本示例将一个自定义的数据类型——结构体,其类型的数据存入到一个链表中,需要输出当前的链表中的数据。
下面是一个简单的示例的代码。

#include <iostream>
#include <list>using namespace std;
struct person {string name;int age;string gender;person(string name,int age,string gender) {this->name = name;this->age = age;this->gender = gender;}	
};ostream& operator<<(ostream& o, const person& per) {o << "name:" << per.name << " age:" << per.age << " gender:" << per.gender;return o;
}int main()
{list<person> listPerson;listPerson.emplace_back("liyang", 2, "man");for (const auto &val :listPerson) {cout << val << " ";}cout << endl;return 0;
}

运行结果

在这里插入图片描述

示例二

在示例一的基础上,增加输入运算符的重载,可以输入自定义类型的数据。
下面是代码实现:

#include <iostream>
#include <list>using namespace std;
struct person {string name;int age;string gender;person() {name = "";age = 0;gender = "";}person(string name,int age,string gender) {this->name = name;this->age = age;this->gender = gender;}	friend ostream& operator<<(ostream& o, const person& per) {o << "name:" << per.name << " age:" << per.age << " gender:" << per.gender;return o;}friend istream& operator>>(istream &i,person & p) {i >> p.name >> p.age >> p.gender;return i;}
};int main()
{list<person> listPerson;listPerson.emplace_back("liyang", 2, "man");for (const auto &val :listPerson) {cout << val << " ";}cout << endl;person obj2;cout << "please input name ,age,gender:" << endl;cin >> obj2;//每输入一个字段之后需要换行listPerson.emplace_front(obj2);for (const auto& val : listPerson) {cout << val << " "<< endl;}return 0;
}

运行结果

在这里插入图片描述

注意点

  • 重载输出运算符<<时,不能定义为成员函数,可以放在自定义类型的外面,也可以将其定义为该类的友元函数。
  • 输出运算符重载需要传入两个参数,一个是输出运算符的引用,一个是自定义类型的常引用。
  • 返回输出运算符的引用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/480076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python——元组

一、元组特性介绍 元组和列表⼀样&#xff0c;也是⼀种序列类型的数据。 唯⼀的不同是&#xff0c;元组是相对不可变的。 二、⾼效创建元组 In [1]: t1 () # 创建 空 元素的元组In [2]: type(t1) Out[2]: tuple有元素的元组实际上是使⽤英⽂的逗号创建的 In [3]:…

Vue3自定义全局指令批量注册

指令封装代码&#xff1a; import type { App } from "vue";const content {mounted(el : any, binding : any) {console.dir(binding.value);el.remove();} };const operate {mounted(el : any, binding : any) {console.dir(binding.value);el.remove();} };cons…

认识TypeScript 中的接口和类

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 接口 类 江城开朗的豌豆 在 TypeScript 中&…

Linux下多核CPU指定程序运行的核

设置程序在指定CPU核心运行 一、如何查看程序运行的CPU信息 1.1 查看当前系统CPU有几个核心 查看CPU核心数量&#xff1a;lscpu 1.2 查看程序的PID ps aux|grep cpu_test1.3 查看程序可运行的CPU taskset -c -p pid1.4 设置程序在指定核心上运行 1.4.1 通过运行时的参数设…

课后延时服务选课报名管理系统功能清单

课后延时服务选课报名管理系统分为学校端&#xff0c;培训机构端&#xff0c;家长端。 学校端提供学生管理&#xff0c;课程管理&#xff0c;班级管理&#xff0c;班级排课&#xff0c;班级课表&#xff0c;可直接安排学生入班上课&#xff0c;查看学生考勤情况&#xff0c;查…

Microsoft Visio 摄像机图标

Microsoft Visio 摄像机图标 1. 更多形状 -> 搜索形状2. 摄像机References 1. 更多形状 -> 搜索形状 2. 摄像机 ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

[Bug解决] Invalid bound statement (not found)出现原因和解决方法

1、问题描述 在写了一个很普通的查询语句之后&#xff0c;出现了下面的报错信息 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.oauth.mapper.WxVisitorQrBeanMapper.selectByComIdAndEmpId at org.apache.ibatis.binding.Mappe…

市场复盘总结 20240220

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 19% 最常用…

vue3+ant design 4.x版本遇见message不显示问题。

自己打断点到success&#xff0c;但是就是没有全局显示。 第一看自己的全局引入是否有问题&#xff1a; import { createApp } from vue; import ./style.css; import App from ./App.vue; import Antd from ant-design-vue; import ant-design-vue/dist/reset.css; import ro…

基于Springboot+Vue的超市管理系统源码

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会经济的发展和…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(8)模型训练

好吧&#xff0c;搞了半天&#xff0c;都是围绕数据在干活&#xff0c;这也就验证了&#xff0c;我们说的&#xff0c;数据准备等工作&#xff0c;要占到机器学习项目一半以上的工作量和时间。而且数据决定了模型的天花板&#xff0c;算法只是去达到上限。 我们今天来学习模型…

MySQL安装教程(详细版)

今天分享的是Win10系统下MySQL的安装教程&#xff0c;打开MySQL官网&#xff0c;按步骤走呀~ 宝们安装MySQL后&#xff0c;需要简单回顾一下关系型数据库的介绍与历史&#xff08;History of DataBase&#xff09; 和 常见关系型数据库产品介绍 呀&#xff0c;后面就会进入正式…