istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()。这两个函数都读取一行输入,直到达到换行符。不同的是,getline()将丢弃换行符,而get()将换行符保留在输入序列中。

目录

一、字符串 I/O

二、string类 I/O


一、字符串 I/O

1.面向行的输入:getline()

getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。要调用这种方法,可以使用cin.getline()。该函数有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数。

ex:cin.getline(typename,size).

#include <iostream>
using namespace std;
int main()
{const int ArSize = 20;char name[ArSize];char dessert[ArSize];cout << "Enter your name:\n";cin.getline(name,ArSize);cout << "Enter your favorite dessert:\n";cin.getline(dessert,ArSize);cout << "I have some delicious " << dessert;cout << " for you , " << name << ".\n";    return 0;
} 

2.面向行的输入:get()

get()与getline()接受的参数相同,解释参数的方式也相同,并且都读取到行尾。但并不再读取并丢弃换行符,而是将其留在输入队列中。

ex:cin.get(typename,size).

当第一次调用后,换行符留在输入队列中,因此第二次调用时看到的第一个字符便是换行符。因此get()认为已经到达行尾,而没有发现任何可读取的内容。

此时可借用get()的另一种变体,使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符)。

因此可以用它来处理换行符,为读取下一行输入做好准备。

ex:

cin.get(typename,size);

cin.get();

cin.get(typename,size);

另一种使用get()的方式是将两个类成员函数拼接起来:

cin.get(typename,size).get();

#include <iostream>
using namespace std;
int main()
{const int ArSize = 20;char name[ArSize];char dessert[ArSize];cout << "Enter your name:\n";cin.get(name,ArSize).get();cout << "Enter your favorite dessert:\n";cin.get(dessert,ArSize).get();cout << "I have some delicious " << dessert;cout << " for you , " << name << ".\n";    return 0;
} 

二、string类 I/O

1.使用string对象的方式与使用字符数组相同

  • 可以使用C-风格字符串来初始化string对象。
  • 可以使用cin来将键盘输入存储到string对象。
  • 可以使用cout来显示string对象。
  • 可以使用数组表示法来访问存储在string对象中的字符。

2.get(cin,str)方法

#include<iostream>
#include<cstring>
using namespace std;
//字符数组i/o
int main()
{char charr1[20];char charr2[20];cout << "Enter your first name:\n";cin.get(charr1,20).get();cout << "Enter your last name:\n";cin.get(charr2,20).get();strcat(charr1,charr2);cout << "Here's the information in a single string :\n";cout << charr1;return 0;
}
//string类i/o
int main()
{string str1,str2;cout << "Enter your first name:";getline(cin,str1);cout << "Enter your first name:";getline(cin,str2);cout << "Here's the information in a single string :";cout << str1 << " , " << str2;cout << "\n";string str3;cout << "Enter third name:";cin >>str3;cout << "str3 = " << str3;return 0;
}

3.string类的其他操作

  • 可以使用函数strcpy()将字符串复制到字符数组中。

  • 可以使用函数strcat()将字符串附加到字符数组末尾。

ex:   strcpy(charr1,charr2)   strcat(charr1,charr2)

C/C++输入输出流相关推荐

  1. python输入输出流详解_输入输出流的概念

    Java中的文件复制相较Python而言,涉及到输入输出流的概念,实现中会调用很多对象,复杂很多,在此以文件复制进行简单总结. 这里是一个简单的处理代码: import java.io.*; publ ...

  2. C++ 输入输出流 文本文件 二进制文件读写

    文本文件/ASCII文件(能直接显示内容,费存储空间):文件中每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件或称字符文件. 二进制文件(不能显示内容,节 ...

  3. c++一日一练:让标准的输入输出流关联一个缓冲区

    上篇文章讲述了如何创建自己的标准输入输出,但是如何将标准的输入输出流进行重定向呢: 下面是一个具体的方法: fp = _fdopen( hConHandle, "w" );    ...

  4. Java IO (二),常见的输入/输出流

    字节流和字符流 InputStream和Reader InputStream和Reader两个抽象类是所有输入流的基类,本身并不能创建实例来执行输入,但它们将成为所有输入流的模板.他们的方法是所有输入 ...

  5. java输出流输入流的使用_Java中的IO流之文件输入输出流

    Java中的IO流之文件输入输出流 1.文件流介绍 文件流是以字节为单位进行读写文件的,所以属于字节流,并且是低级流.文件流位于java.io包下. 输入输出流分别是FileInputSteam和Fi ...

  6. java输出流缓冲区内容清除,Java输入输出流与缓冲区的使用

    Java输入输出流与缓冲区的使用,有需要的朋友可以参考下. 一,Input/Output流: 将外设中的数据读取到内存中就是输入. 将内存中的数据写入到外设中就是出. I/O流就是用来处理设备间的 . ...

  7. java实验 输入输出流_java实验七 输入输出流

    有关java的实验和程序 实验七 输入输出流 一.实验目的和要求 目的: 1.掌握使用输入输出流进行文件的读写操作. 要求: 1.实验报告给出内容1,2的填充代码以及内容3的全部源代码. 二.实验内容 ...

  8. java实验七输入输出流_实验六_Java的输入输出流

    JAVA的输入输出流 实验六 Java的输入输出流 实验目的 1. 理解I/O流的概念,掌握其分类 2. 掌握文本文件读写.二进制文件读写 实验环境 JDK1.4以上版本, Eclipse集成开发环境 ...

  9. 【java开发系列】—— java输入输出流

    前言 任何语言输入输出流都是很重要的部分,比如从一个文件读入内容,进行分析,或者输出到另一个文件等等,都需要文件流的操作.这里简单介绍下reader,wirter,inputstream,output ...

  10. Java输入输出流IO

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

最新文章

  1. ASP.NET TricksTip:关于Tooltip(title)的换行问题
  2. 解决putty中文乱码并远程访问linux界面功能
  3. Xilinx 7系列FPGA介绍
  4. 三点到六点是几个小时_环卫工在10吨垃圾里找了6小时,终于找到这张价值19万元的餐巾纸...
  5. 51CTO学院四周年-成长之路
  6. aws eks_在生产中配置和使用AWS EKS
  7. android 日历仿IOS,基于Android week view仿小米和iphone日历效果
  8. S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)
  9. Android -- 网络请求
  10. 手把手教你从0-1做一张酷炫驾驶舱,让老板对你赞不绝口
  11. nginx日志统计分析的相关常用命
  12. Angularjs总结(一)表单验证
  13. android按钮切换颜色,togglebutton
  14. 判断一个字符串是否在一个数组中
  15. delphi 读取excel 两种方法
  16. 使用Bartend提取K3领料数据以实现发料包装标识批量自动打印
  17. 全国DNS服务器ip地址
  18. 将多个BIN文件合成一个
  19. 笔记本电脑合上盖子不休眠设置方法
  20. python 下载公众号文章_最便捷的微信公众号文章下载器——基于Python爬虫微信文章...

热门文章

  1. 八数码问题I-bfs和map标记
  2. word List37
  3. laradock双版本php,自己撸一个 LaraDock(使用 Docker LNMP 部署 PHP 开发环境)
  4. mysql stack is full_mysql优化之表的优化与列类型选择
  5. IP地址与MAC地址的区别
  6. Web Service简介
  7. xorg.conf变更导致开机无法显示
  8. 【SDOI2018】战略游戏【圆方树】【虚树】
  9. CF1043E Train Hard, Win Easy
  10. 【每日一题】8月27日题目精讲 Is It A Tree?