首页 > 其他分享 >输入输出流

输入输出流

时间:2024-02-19 15:12:21浏览次数:19  
标签:cout get int 输入输出 cin char main

1.系统标准的输入流(重点)

1.流的概念和流类库的结构(了解)

标准IO:对系统的标准输入输出设备进行读写

文件IO:对磁盘进行输入输出读写

串IO:对内存进行读写 申请数组

2.成员函数

cin.get() //一次只能从缓冲区读取一个字符 可以接受空格 换行

//首先cin的输入有一个特点,在遇到‘ ’(空格)时,会结束输入,而cin.get()则将‘ ’也作为了一个字符放到输入里。那其次就是cin.get()的用法了。其用法如下:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

int main() {
	//输入的是as换行
	char c = cin.get(); //a
	cout << c << endl;

	c = cin.get();   //s
	cout << c << endl;

	c = cin.get(); //换行
	cout << c << endl;

	c = cin.get(); //阻塞
	cout << c << endl;
}

cin.get(一个参数) //读一个字符

int main() {
	char c1;
	cin.get(c1);  //获取字符
}

cin.get(两个参数) //可以读字符串

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

int main() {
	char c1, c2, c3, c4;
	cin.get(c1).get(c2).get(c3).get(c4);  //获取字符
	cout << c1 << c2 << c3 << c4;
}

int main() {
	char a[20];       //注意,可以接收空格且换行不拿走 留在缓冲区 此例子c接受了换行符
	cin.get(a, 20);  //第二个参数是接受字符的个数 
	char c = cin.get();
	if (c == '\n') {
		cout << "enter is no jie" << endl;
	}
	cout << a << endl;
}

cin.getline() //取一行,换行符丢弃

#include<iostream>
using namespace std;

int main() {
	char a[20];
	cin.getline(a, 20); //读取一行数据 换行丢弃
	cout << a << endl;
}

cin.ignore() //忽略

using namespace std;

int main() {
	cin.ignore(); //忽略一个字符
	char c = cin.get();
	cout << c << endl;
    cin.ignore(3); //忽略三个字符
	c = cin.get();
	cout << c << endl;
}

cin.peek() //偷窥

#include<iostream>
using namespace std;

int main() {
	//输入ab 输出aa
	char c = cin.peek(); //只看第一个字符  字符不拿走 依旧在缓冲区
	cout << c << endl;
	c = cin.peek();
	cout << c << endl;
}

cin.putback() //放回

using namespace std;

int main() {
	//输入hello  输出// h  hello
	char c = cin.get();
	cout << c << endl;
	cin.putback(c); //将读取的字符放回缓冲区

	char buf[1024] = { 0 };
	cin.getline(buf,1024);
	cout << buf << endl;
}

3.案例

//判断用户输入的是字符串还是数字
void test06()
{
	cout << "请输入一个字符串或数字" << endl;

	char c=cin.peek(); //偷窥第一个输入的字符

	if (c >= '0'&&c <= '9')
	{
		int num;
		cin >> num;
		cout << "输入的数字是:" << num << endl;
	}
	else
	{
		char buf[1024] = { 0 };
		cin >> buf;
		cout << "输入的字符串是:" <<buf << endl;
	}
}

//0 :goodbit 无错误 
//1 :Eofbit 已到达文件尾 
//2:failbit 非致命的输入/输出错误,可挽回 
//3:badbit 致命的输入/输出错误,无法挽回 

//输入一个0到10的数字,直到输入正确为止
void test07()
{
	int num;

	while (1)
	{
		cin >> num;
		if (num >= 0 && num <= 10)
		{
			cout << "输入正确" << endl;
			break;
		}
		cout << "重新输入:" << endl;
		//清楚错误的状态的flag  比如输入d  缺把d赋值给int这种整形  d仍然会留在缓冲区  
		cin.clear(); 
        
		//2013清空缓冲区   
		cin.sync();
        
        
		//2015 清空缓冲区
		char buf[1024] = { 0 };
		cin.getline(buf, 1024);

		//打印标志位 当输入流读取失败时,它会把字符放回原处,等待下次读取;并且将 条件状态标识符 中failbit 置位 正确返回1 错误返回0
		cout << cin.fail() << endl;
	}
}

2.系统标准的输出流(重点)

1.通过成员函数格式化输出

void test01()
{
	cout.put('c');
    //链式编程
    cout.put('a').put('b').put('c');
}

void test02()
{
	char buf[] = "hello world";
    cout.write(buf,strlen(buf));
}

//通过流的成员函数实现格式化的输出
void test03()
{
	int num = 99;
	cout.width(20);//设置宽度
	cout.fill('*');//填充
	cout.setf(ios::left);//让数据在左边
    
    //变成十六进制
	cout.unsetf(ios::dec);//卸载十进制
	cout.setf(ios::hex);//安装十六进制
    
	cout.setf(ios::showbase);//显示基数 美化十六进制
    
    //变成八进制
	cout.unsetf(ios::hex);//卸载十六进制
	cout.setf(ios::oct);//安装八进制
    
	cout << num << endl;
}

2.通过控制符格式化输出

//通过控制符来格式化输出,引入头文件iomanip
void test04()
{
	int num = 99;
	cout << setw(20);//设置宽度
	cout << setfill('*');//填充
	cout << setiosflags(ios::showbase);//显示基数
	cout << setiosflags(ios::left);//让数据在左边
    
    //不用卸载了
	cout << hex;//六十进制
	cout << oct;//八进制
	cout << dec;//十进制
	cout << num << endl;
}

3.打印浮点数后面的小数点

void test05()
{
	double d = 20.22;
    //设置显示浮点数 20.220000
	cout << setiosflags(ios::fixed);
    
    //显示小数点后10位
	cout << setprecision(10);
	cout << d << endl;
}

标签:cout,get,int,输入输出,cin,char,main
From: https://www.cnblogs.com/wbcde116/p/18021133

相关文章

  • C++文件输入输出的简单实现(Debug)
    1.前言:        文件输入输出是个很有用的东西,有时比赛时要有:要求使用文件输入输出,还有时候……    遇到这种时间限制非常恶心的题目:手动测试会有误差……    文件输入输出是个很好的选择!2.写法:C    C语言的写法有点复杂,涉及文件指针,本文不......
  • 自学编程的输入输出纠正法
    自学编程的输入输出纠正法———engo给大家分享一套学习方法,没有那么多花里胡哨的东西,简单来说就两个阶段输入和输出,输入阶段要做的就是拼命的吸收知识构建完整的知识体系怎么做呢?这里要分三步走输入利用免费视频快速入门:第一步就是先看视频B站之类的免费视频就完全够用了,至......
  • 【C++】c++中的输入输出;缺省;重载;
    1、c++输入输出#include<iostream>//std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中usingnamespacestd;intmain(){ cout<<"Helloworld!!!"<<endl; return0;}//流插入运算符<<在一个语句中可以多次使用,如上面实例中所示,endl用于在行末添加......
  • 物联网工程师技术之C语言IO输入输出技术
    本章重点​语句和语句块​printf函数​scanf函数在C语言编程中,经常需要通过输入设备(如键盘)向程序录入信息,或者将信息显示在输出设备(如屏幕),这时,可以使用输入输出语句来完成。输入输出语句是用户与程序交互的唯一途径,掌握好输入输出语句对后面的学习至关重要。本章将针对输入......
  • ETLCloud:实现数据库快速输入输出的利器
    在当今大数据时代,数据的高效处理和管理成为企业发展的关键。而数据库作为数据存储和管理的核心,其输入输出效率的提升对于企业来说至关重要。ETLCloud数据集成工具,为企业提供了快速、灵活、稳定的数据库输入输出解决方案,极大地简化了数据处理流程,提高了工作效率。 系统优点简......
  • 03 输入输出系统和总线结构
    输入输出技术计算机系统中存在多种内存与接口地址(输入输出)的编制方法,常见的是两种:1、内存与接口地址独立编制方法内存地址和接口地址是完全独立的两个地址空间。优点:编程序和读程序很容易使用和辨认。缺点:用于接口的指令(需要独立设计)太少、功能太弱。2、内存与接口地址统......
  • linux下NTFS磁盘报错输入输出错误
    title:linux下NTFS磁盘报错输入输出错误banner_img:https://cdn.studyinglover.com/pic/2023/12/334c0c129076533308cbc7e03f8c55be.pngdate:2024-1-1522:50:00tags:-踩坑linux下NTFS磁盘报错输入输出错误简单来说就是我在linux下挂载了一个NTFS格式的移动硬盘,然后在......
  • 重载输入输出运算符<< 学习
    转自:https://developer.aliyun.com/article/297612,https://blog.csdn.net/My_heart_/article/details/515346241.介绍cin和cout分别是istream类和ostream类的对象,在类库提供的头文件中已经对这两个类的“<<”和“>>”进行了重载。若自定义的类要使用<</>>作为输入或输出,需要重......
  • 数据处理动作——增删改查输入输出-map-flattern-agg-concat-merge
    numpypytorchmindsporeimportnumpyasnpdefzscore(x,axis=None):xmean=x.mean(axis=axis,keepdims=True) xstd=np.std(x,axis=axis,keepdims=True) zscore=(x-xmean)/xstd returnzscore###说明指定如何加,不同软件和框架有默认或者隐式处理 维度-......
  • 牛客OJ在线编程常见输入输出练习
    练习链接:https://www.nowcoder.com/exam/test/76850250/detail?pid=27976983&examPageSource=Search 题目:A+B(4)输入数据包括多组。每组数据一行,每行的第一个整数为整数的个数n(1<=n<=100),n为0的时候结束输入。接下来n个正整数,即需要求和的每个正整数。示例:输入......