博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ primer plus笔记整理 04
阅读量:4221 次
发布时间:2019-05-26

本文共 2083 字,大约阅读时间需要 6 分钟。

C/C++输入相关整理

常用的一些输入方法:

1.cin
2.cin.get()
3.cin.getline()
4.getline()
5.getchar()

1.cin

这是最常用的输入,可以同时接收几个多个参数,并且它会自动过滤掉空白字符(Tab,空格,换行….)

这也会使得多出来的输入留在输入流中,它只能截断到需要的对应个数的参数

int a,b;cin>>a>>b;cout<<"a = "<<
<<"b = "<
<

如上的6,7留在了输入流中,没被读取到

cin接收一串字符串:和上面的规律一样,遇见空白字符直接截断,到这为止的字符串

char a[20];cin>>a;cout<<"a = "<<

2.cin.get()

用来接受单个字符

char ch;ch = cin.get();      //或cin.get(ch)cout<<"ch = "<
<

接收指定长度的字符数组

cin.get(字符数组名,指定长度)这个函数遇到换行结束,空格和tab都算一个有效字符

char ch[20];cin.get(ch,20);cout<<"ch = "<
<

cin.get()这个直接使用可以用来某些情况从输入流中提取一个字符,任意字符包括空白,读到EOF返回结束标识

int c;cout<<"enter a sentence:"<

3.cin.getline()

接收一个字符串,可以接收空格并输出

这个函数其实和上面写到的带参数的cin.get()类似,这个函数的完整形式是:cin.getline(接受字符串的名字,接受的数目,指定结束字符)
一般我们省略了第三个参数,系统默认是以’\n’为EOF,我们来试着改一下:

char ch[20];cin.getline(ch,20,'a');cout<<"ch = "<
<

这里我们发现一个问题:cin.get()也能指定三个参数,那么这和cin.getline()不就一模一样了么?

答案是:它们两唯一的区别是cin.get()会保留最后输入的’\n’在缓存区中,而cin.getline()会抛弃这个’\n’
举个例子:

char name[15];cin.get(name,15);cout<<"name = "<
<<"\n";char addr[15];cin.get(addr,15);cout<<"addr = "<
<<"\n";//这里是两个cin.get(),也就是会把'\n'保留在缓存区,那我们知道name读完之后,cin.get()继续读缓存区,这是看见一个'\n',就直接结束了/*hello worldname = hello wolrdaddr = *///很明显,addr什么只读取到了一个结束符,没读到任何一个有效字符

那么,换成cin.getline()呢?

char name[15];cin.getline(name,15);cout<<"name = "<
<<"\n";char addr[15];cin.get(addr,15);cout<<"addr = "<
<<"\n";/*hello (enter)name = helloworld (enter)addr = world*///这时候因为cin.getline()将输入的enter丢弃了,所以addr能读取到'\n'后的字符,并以enter结束读取

4.getline()

接受一个字符串,可以接收空格并输出,但是它是C风格字符串中的函数,需包含#include

string str;getline(cin,str);cout<
<

这个函数和之前的cin.getline()用法也类似,也能指定结束符,但是不能指定长度。

原形如下:
istream& getline ( istream& is, string& str, char delim );

istream& getline ( istream& is, string& str );

5.getchar()和putchar()

这两个函数是C中的字符输入输出函数,getchar()和cin.get()功能一样,都是接收一个单字符

函数原形:
#include

int c;c = getchar();putchar(c);putchar('\n');/*helloh*///只读取和输出单个字符,这两个函数比较简单//putchar()接受整形,是因为ASCII中的128个字符都能用整形表示,你可以用整数来代表,如65 对应 'A'//同时,getchar()的返回值是int型,cout一个getchar时候是输出字符在ASCII对应的数字,如c是'A'就输出65

有什么错误还请指出,谢谢

转载地址:http://ehmmi.baihongyu.com/

你可能感兴趣的文章
C 编写lua模块(1)
查看>>
Lua教程:Lua调用C/C++函数(4)
查看>>
win下创建win32控制台工程,执行lua脚本
查看>>
cocos2dx android启动错误
查看>>
eclipse: android rename package name
查看>>
cocos2dx c++调用java思想
查看>>
cocos2dx lua Node节点 私有数据存取
查看>>
lua math.ceil math.ceil
查看>>
cocos2dx CCNode计算node的大小
查看>>
cocos2dx 布局记录(1)
查看>>
lua 多行注释和取消多行注释
查看>>
缩放系数计算
查看>>
cocos2dx --- 按钮点击居中放大
查看>>
cocos2dx menu位置计算
查看>>
cocos2dx资源加载机制(同步/异步)
查看>>
cocos2dx C++调用java -- 字符串传递
查看>>
git学习网站
查看>>
JavaScript 学习网站
查看>>
cocos2dx java调用c++ -- 字符串传递
查看>>
CCScaleTo与CCScaleBy比较
查看>>