我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++输入和输出流的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++输入和输出流的示例分析

这篇文章给大家分享的是有关C++输入和输出流的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    输入和输出流

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

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

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

    C++输入和输出流的示例分析

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

    标准输入流

    常用的成员函数

    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.(原因:字符数组最后一个字符是不可见字符&rsquo;\0&rsquo;)

    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();//abcout << c << endl;//b,将a忽略了

    5,cin.peak()偷窥

    char c = cin.peek();cout << c << endl;//achar 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(&lsquo;h&rsquo;).cout.put(&lsquo;a&rsquo;);//打印结果就是: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(向前面加空格),结果:   99cout.fill('*');//空格处都填充上*,结果:***99,(填充内容会被下一此的填充内容覆盖)cout.setf(ios::left);//输出的文本左对齐,结果99***    cout.unsetf(ios::dec);//卸载十进制cout.setf(ios::hex);//安装十六进制,结果为63***cout.setf(ios::showbase);//显示基数,结果0x63*。输出对应进制的基数,16进制就是0xcout.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>(文件流)

    感谢各位的阅读!关于“C++输入和输出流的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    C++输入和输出流的示例分析

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

    下载Word文档

    猜你喜欢

    C++输入和输出流的示例分析

    这篇文章给大家分享的是有关C++输入和输出流的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。输入和输出流从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。从磁盘文件输入数据
    2023-06-29

    Java中输入/输出流体系的示例分析

    这篇文章主要介绍Java中输入/输出流体系的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java输入/输出流体系1.字节流和字符流字节流:按字节读取。字符流:按字符读取。字符流读取方便,字节流功能强大,当不
    2023-05-30

    Java IO中字节输入输出流的示例分析

    这篇文章主要介绍Java IO中字节输入输出流的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!讲的是字节输入输出流:InputStream、OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实
    2023-06-26

    如何解析C++中IO流的输入输出流

    本篇文章为大家展示了如何解析C++中IO流的输入输出流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。介绍流: 若干字节数据从一端到另一端我们叫做流例如:操作文件,从程序到文件,数据的流动的操作称为流
    2023-06-22

    JAVA语言输入输出流的示例代码

    这篇文章主要介绍了JAVA语言输入输出流的示例代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。public class IOStreamDemo { public
    2023-06-03

    C++ stringstream格式化输出输入分析

    这篇文章主要讲解了“C++ stringstream格式化输出输入分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++ stringstream格式化输出输入分析”吧!目录最近在笔试时经
    2023-06-25

    JAVA语言的输入输出流详解(c)

    详解b中的例子,详解[@more@]  1. BufferedReader是Reader的一个子类,它具有缓冲的作用,避免了频繁的从物理设备中读取信息。它有以下两个构造函数:BufferedReader(Reader in) Buffere
    2023-06-03

    解读torch.nn.GRU的输入及输出示例

    这篇文章主要介绍了解读torch.nn.GRU的输入及输出示例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-28

    C++标准输入输出流指的是什么

    C++标准输入输出流(Standard Input/Output Stream)是C++标准库提供的一组用于输入和输出的类和对象。它们用于处理与用户交互、读写文件以及与外部设备进行通信等操作。C++标准输入输出流包括以下几个类:1. ist
    2023-09-20

    Java输入输出IO、NIO和AIO对比分析

    这篇文章主要讲解了“Java输入输出IO、NIO和AIO对比分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java输入输出IO、NIO和AIO对比分析”吧!1、Java I/O发展史
    2023-07-06

    python语言中流程的输入与输出案例

    这篇文章将为大家详细讲解有关python语言中流程的输入与输出案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。流程中的输入,一般都会先保存在变量(即内存)中,而这个输入,可以来自于键盘(也称为标准输入)
    2023-06-19

    C语言输出孪生素数的实现示例分析

    今天就跟大家聊聊有关C语言输出孪生素数的实现示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.题目内容:孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数对是3和5,5和
    2023-06-26

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录