【转载】C++中cin、cin.get()、cin.getline()、getline()、gets()函数详解
学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结:
1、cin
2、cin.get()
3、cin.getline()
4、getline()
5、gets()
6、getchar()
附:cin.ignore(); cin.get()//跳过一个字符,例如不想要的回车,空格等字符
1、cin>>
用法1:最基本,也是最常用的用法,输入一个数字:
#include <iostream>
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}
输入:2[回车]3[回车]
输出:5
注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)
cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制
用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束
#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}
输入:jkljkljkl
输出:jkljkljkl
输入:jkljkl jkljkl //遇空格结束
输出:jkljkl
2、cin.get()
用法1: cin.get(字符变量名)可以用来接收字符
#include <iostream>
using namespace std;
main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);
cout<<ch<<endl;
}
输入:jljkljkl
输出:j
用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
#include <iostream>
using namespace std;
main ()
{
char a[20];
cin.get(a,20);
cout<<a<<endl;
}
输入:jkl jkl jkl
输出:jkl jkl jkl
输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足(因为cin.get()把换行符保留在输入缓冲区,可以用cin.get()来舍弃换行符)
3、cin.getline() // 接受一个字符串,可以接收空格并输出
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}
输入:jkljkljkl
输出:jklj
接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;
如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl
输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf
//延伸:
//cin.getline()实际上有三个参数,cin.getline(接受字符串的储存空间m,接受个数5,结束字符)
//当第三个参数省略时,系统默认为'\n'
//如果将例子中cin.getline()改为cin.getline(m,5,'\n');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk,此时cin的状态标志位false(只要是输入的个数超过接受的个数认为不是正确结束,如果接着还用getline()函数,需要cin.clear())
当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:
#include<iostream>
#include<string>
using namespace std;
main ()
{
char m[3][20];
for(int i=0;i<3;i++)
{
cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;
cin.getline(m[i],20);
}
cout<<endl;
for(int j=0;j<3;j++)
cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
}
请输入第1个字符串:
kskr1
请输入第2个字符串:
kskr2
请输入第3个字符串:
kskr3
输出m[0]的值:kskr1
输出m[1]的值:kskr2
输出m[2]的值:kskr3
4、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”
#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
【转载】C++中cin、cin.get()、cin.getline()、getline()、gets()函数详解相关推荐
- php中get_featured_posts()是什么意思,WordPress的Get_Posts()函数详解
WP中获取POST有两个主要函数,Get_post()和Get_Posts().一个是获取单文章,另外一个是获取多文章,其中,官网对Get_posts()函数的描述很简单.但有的时候描述越简单的函数, ...
- linux中recvfrom读取速度,Linux系统调用-- recv/recvfrom 函数详解
Linux系统调用-- recv/recvfrom函数详解 功能描述: 从套接字上接收一个消息.对于recvfrom,可同时应用于面向连接的和无连接的套接字.recv一般只用在面向连接的套接字,几乎等 ...
- 【转载】动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)...
原文地址:https://www.cnblogs.com/westsoft/p/5936092.html 动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行 ...
- insert 语句_替换某字段中的特定字符串——MySQL REPLACE 与INSERT 函数详解
MySQL提供了一个非常实用的字符串函数--REPLACE() 函数,它允许用新的字符串替换字段中的特定字符串,而不再需要自己写函数去替换,用起来非常的方便. REPLACE() 函数语法 需要注意的 ...
- python中反三角函数用法_Python入门之三角函数atan2()函数详解
python 的 Python入门之三角函数atan2()函数详解 描述 atan2() 返回给定的 X 及 Y 坐标值的反正切值. 语法 以下是 atan2() 方法的语法: import math ...
- C++中数组和指针的关系(区别)详解
C++中数组和指针的关系(区别)详解 本文转自:http://c.biancheng.net/view/1472.html 博主在阅读后将文中几个知识点提出来放在前面: 没有方括号和下标的数组名称实际 ...
- PHP中IP地址与整型数字互相转换详解
这篇文章主要介绍了PHP中IP地址与整型数字互相转换详解,本文介绍了使用PHP函数ip2long与long2ip的使用,以及它们的BUG介绍,最后给出自己写的两个算法,需要的朋友可以参考下 IP转换成 ...
- Matlab中 pdist 函数详解
学习笔记,仅供参考,有错必纠 转载自:Matlab中 pdist 函数详解(各种距离的生成); pdist Pairwise distance between pairs of objects. Sy ...
- Java中创建String的两道面试题及详解
转载自 Java中创建String的两道面试题及详解 我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd";String str2 ...
最新文章
- 数据结构与算法(6-2)二叉树的存储结构(顺序存储、链式存储)
- 台湾民众浙江奉化“过大年” 感知大陆新农村建设
- 一个在菜场看到的,神一般的大爷!
- SIGIR阿里论文 | 可视化理解深度神经网络CTR预估模型
- JavaScript 如何使用闭包
- C# String和string的区别
- Java-note-调试小技巧
- linux操作系统使用论文_Linux学习2 使用VirtualBox安装国产深度操作系统
- SNMP协议-SNMP TRAP
- 深入理解HashMap底层数据结构
- ELK---介绍--安装配置
- imx8qxp uuu 下载脚本example_kernel_emmc.uuu注释
- C#姓名与机构名称生成专用类
- xcode证书签名快速完美解决
- 雷军的博客分享- 这局棋,我站在人工智能这边
- c# 容联云_Rest Server Demo_开发文档_容联云通讯
- Android Studio 项目依赖由于资源在国外而下载不了的问题
- 如何做番茄炖牛腩——hadoop理解
- 抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)
- 视野 | OpenSearch,云厂商的新选择?