广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++的输入和输出流详解
  • 918
分享到

C++的输入和输出流详解

2024-04-02 19:04:59 918人浏览 安东尼
摘要

目录输入和输出流标准输入流小案例标准输出流文件读写总结输入和输出流 从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。 从磁盘文件输入数据,数据输出到

输入和输出流

从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。

从磁盘文件输入数据,数据输出到磁盘文件简称文件I/O。

对内存中指定的空间进行输入输出,通常指定一个字符数组作为存储空间(存储任何信息),称为字符串输入输出,简称为串I/O

img

缓冲区:无论是输入还是输出都是存在缓存区的。

标准输入流

常用的成员函数

1,cin.get()获取一个字符

char c = cin.get();

使用cin.get()可以家当缓冲区中的换行符拿走。注意返回值是什么类型的,拿走的数据再输出的时候就是什么类型。

2,cin.get(两个参数)获取字符串

参数是字符串数组名和个数

使用cin.get(两个参数)那字符串的时候,换行符\0会遗留在缓冲区中。

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

只满足字符数组,且输出的字符个数总比第二个参数少1.(原因:字符数组最后一个字符是不可见字符’\0’)

3,cin.getline()获取字符串

接收一个字符串并输出

和cin.get(两个参数)相似,不会将换行符加入字符串,但是也不会留在缓冲区中,而是直接扔掉。

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

可以有第三个参数,就是终止位置(一个字符,不包括这个字符)

4,cin.ignore()忽略一个字符

括号中可以填入参数,参数就是忽略字符的个数。默认是一个。

cin.ignore();
char c = cin.get();//ab
cout << c << endl;//b,将a忽略了

5,cin.peak()偷窥

char c = cin.peek();
cout << c << endl;//a
char m = cin.get();
cout << m << endl;//a

缓冲区中,输入了一个a,然后cin.peek()只是看了一眼,并没有拿走,所以调用cin.get()的时候可以直接从缓冲区中拿。

6,cin.putback()放回(原来的位置)

char c = cin.get();
cin.putback(c);//将从缓冲区拿走的字符返回原位置
char buf[100] = { 0 };
cin.getline(buf, 100);//接收的是缓冲区中的字符串,输出的对象是buf这个字符数组。 
cout << buf << endl;

输入hello,输出仍是hello。

小案例

案例一:判断输入的内容是字符串还是数字(不存在混合的情况)

int main()
{
	cout << "请输入一个数字或者一个字符串" << endl;
	char c = cin.peek();
	if (c >= '0' && c <= '9')
	{
		cout << "数字" << endl;
		int num;
		cin >> num;
		cout << num << endl;
	}
	else
	{
		cout << "字符串" << endl;
		char buf[100] = { 0 };
		cin >> buf;
		cout << buf << endl;
	}
	return 0;
}

案例二:

用户输入0-10之间的数字,如果输入有误,重新输入。

int main()
{
	cout << "请输入一个0-10之间的数字" << endl;

	while(true)
	{
		int num;
		cin >> num;
		if (num >= 0 && num <= 10)
		{
			cout << "输入正确,输入的值为: " << num << endl;
			break;
		}
		else
		{
			cout << "输入有误,请重新输入" << endl;
		}
	}
	return 0;
}

如果输入的是一个数字,那么一切正常。但是如果输入字符,那么就是陷入死循环。这个时候就是缓存区出现了问题。

所以,如果没有输入正确,那么可以进行清空缓存区和重置标志位。(这个标志位如果是0表示缓冲区正常,1就是不正常)

cin.clear();//清空缓冲区
cin.sync();//重置标志位
cin.ignore();//帮助清空2013版本以上需要加。
//上面三句话连着使用。
cin.fail();//标志位

标准输出流

1,cout.put(),向缓冲区写一个字符

括号里面是啥,就打印啥。

可以拼接使用:cout.put(‘h’).cout.put(‘a’);//打印结果就是:ha

2,cout.write(两个参数),

两个参数是char* ,和 对应字符串的长度(不能超过最大长度)。从字符串中拿走规定长度的内容输出。

char arr[] = "hello";
cout.write(arr, strlen(arr));//hello

但是如果要全部打印的话,直接使用cout<<arr<<endl;也是可以的。优点应该是可以打印规定长度的字符串。

格式化输出:

(1) 通过流成员函数 格式化输出

int main()
{
	int num = 99;
	cout.width(5);//指定宽度为20(向前面加空格),结果:   99
	cout.fill('*');//空格处都填充上*,结果:***99,(填充内容会被下一此的填充内容覆盖)
	cout.setf(iOS::left);//输出的文本左对齐,结果99***
    cout.unsetf(ios::dec);//卸载十进制
	cout.setf(ios::hex);//安装十六进制,结果为63***
	cout.setf(ios::showbase);//显示基数,结果0x63*。输出对应进制的基数,16进制就是0x
	cout.unsetf(ios::hex);//卸载十六进制
	cout.setf(ios::oct);//安装八进制,结果为0143*。
	cout << num << endl;
	return 0;
}	

(2) 使用控制符 格式化输出

如果使用控制符格式化输出的话,需要引用头文件

#include<iomanip>

指定宽度:

    int number = 110;
	cout << setw(20)//指定宽度为20,然后默认将数据右对齐
		<< number
		<< endl;
	//运行结果:                 110

填充:

    int number = 110;
	cout << setw(20)
		<< setfill('*')//填充,位置在前在后无所谓
		<< number
		<< endl;
	//运行结果:*****************110

显示基数:

int number = 110;
	cout << setw(20)
		<< number
		<< setfill('*')
		<< setiosflags(ios::showbase)//显示基数
		<< endl;	
	//运行结果:*****************110,和上面的没有区别,因为十进制是没有基数的。

设置左对齐:

	int number = 110;
	cout << setw(20)
		<< setfill('*')
		<< setiosflags(ios::showbase)
		<< setiosflags(ios::left)//设置左对齐
		<< number
		<< endl;	
	//运行结果:110*****************
//这个时候需要注意一下,如果按照刚才将number写在前面的时候是得不到想要的结果的,所以应该将最终要输出的内容尽量写在右边。

显示十六进制:

	int number = 110;
	cout << setw(20)
		<< setfill('*')
		<< setiosflags(ios::showbase)
		<< setiosflags(ios::left)
		<< hex//显示16进制
		<< number
		<< endl;	
	//运行结果:0x6e****************

文件读写

写文件:

需要引头文件:#include<fstream>(文件流)

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

--结束END--

本文标题: C++的输入和输出流详解

本文链接: https://www.lsjlt.com/news/140887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++的输入和输出流详解
    目录输入和输出流标准输入流小案例标准输出流文件读写总结输入和输出流 从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。 从磁盘文件输入数据,数据输出到...
    99+
    2022-11-13
  • C++输入流和输出流 超级详细
    目录1、简单介绍2、C++输入流和输出流1、简单介绍 C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语...
    99+
    2022-11-12
  • JAVA语言的输入输出流详解(c)
    详解b中的例子,详解[@more@]  1. BufferedReader是Reader的一个子类,它具有缓冲的作用,避免了频繁的从物理设备中读取信息。它有以下两个构造函数:BufferedReader(Reader in) Buffere...
    99+
    2023-06-03
  • C++学习之IO流(输入输出流)详解
    目录介绍基本输入、输出流freopen字符类的处理介绍 流: 若干字节数据从一端到另一端我们叫做流 例如:操作文件,从程序到文件,数据的流动的操作称为流操作 流类体系 专门处理输入输...
    99+
    2022-11-12
  • C++基础学习之输入输出流详解
    目录1. 输入输出流2. 文件输入输出3. 格式化输入输出4. 字符串输入输出5. 空格处理C++是一种广泛应用的编程语言,其输入和输出是程序所必须的基本操作之一。输入是指从外部获取...
    99+
    2023-05-17
    C++输入输出流 C++输入流 C++输出流
  • JAVA输入输出流详解(H)
    */public String loadFileCon(String fileName,File file,String type){String fileContent = "",conTemp = "";byte[] fileConfB...
    99+
    2023-06-03
  • JAVA输入输出流详解(G)
    import java.util.*;import java.util.zip.*;import java.io.*;class ZipFileHandle{private String[] FileNameArray; ...
    99+
    2023-06-03
  • JAVA输入输出流详解(F)
    前两天看了《java核心编程》中对于java中的IO输入输出讲解,收获良多,下面的程序是我读完书以后自己写的一个将zip文件集中的文件内容读取出来然后显示(只限于文本,其他文件将会产生乱码),此程序也可通过改进可以得到一个和winzi...
    99+
    2023-06-03
  • 如何解析C++中IO流的输入输出流
    本篇文章为大家展示了如何解析C++中IO流的输入输出流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。介绍流: 若干字节数据从一端到另一端我们叫做流例如:操作文件,从程序到文件,数据的流动的操作称为流...
    99+
    2023-06-22
  • C++输入和输出流的示例分析
    这篇文章给大家分享的是有关C++输入和输出流的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。输入和输出流从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。从磁盘文件输入数据...
    99+
    2023-06-29
  • JavaIO之字节输入输出流详解
    目录1、字节输出流:OutputStream2、字节输入流:InputStream3、用字节流完成文件的复制总结那么这篇博客我们讲的是字节输入输出流:InputStream、Outp...
    99+
    2022-11-13
  • Python的输入和输出问题详解
    输出用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下: >>> print('hello, world') print()函数也可以接受多个字符...
    99+
    2023-01-30
    详解 Python
  • C++的输入与输出和格式化输出
    目录一、C++ 输入与输出 格式化输出1.cin与cout2.格式化输出2.1设置域宽及位数2.2按进制输出2.3设置填充符总结一、C++ 输入与输出 格式化输出 1.cin与cou...
    99+
    2022-11-12
  • C++输入输出(cin和cout)
    在C语言中,我们通常会使用 scanf 和 printf 来对数据进行输入输出操作。在C++语言中,C语言的这一套输入输出库我们仍然能使用,但是 C++ 又增加了一套新的、更容易使用的输入输出库。【例1】简单的输入输出代码示例:#inclu...
    99+
    2023-06-03
  • 图文详解Java中的字节输入与输出流
    目录字节输入流 字节输入流结构图FileInputStream类构造方法:常用读取方法:字节输出流 字节输出流结构图:FileOutputStream类构造方法:常用写入方法:总结字节输入流 java.io.InputStream抽象类是...
    99+
    2017-02-14
    java字节输入流和输出流 java文件输入输出字符流 java字节流
  • C++标准输入输出流指的是什么
    C++标准输入输出流(Standard Input/Output Stream)是C++标准库提供的一组用于输入和输出的类和对象。它...
    99+
    2023-09-20
    C++
  • Python的输入,输出和标识符详解
    目录一、标识符命名要规范:需要注意以下两点:二、input(输入)三、print(输出)总结一、标识符 何为标识符? 标识符是用来标识某个实体的一个符号。在编程语言中,标识符是计算机...
    99+
    2022-11-12
  • C++ stringstream格式化输出输入详情
    目录最近在笔试时经常遇见各种输入问题,于是细心总结一波;首先string str; cin>>str;遇到空格结束;于是乎产生了getline(),可与得到一行字符串;空...
    99+
    2022-11-12
  • Java的输入输出流的概念
    本篇内容主要讲解“Java的输入输出流的概念”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的输入输出流的概念”吧!Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出...
    99+
    2023-06-17
  • c++标准输入输出流关系的前世今生
    输入输出是每一种编程语言必不可少的部分,c++也不例外,下面我们就来说明c++的标准输入输出的前世今生。 1.首先说一下iostream和iostream.h的区别 #incl...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作