C++中cin、cin.get()、cin.getline()、getline()等函数的用法

转载:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html
c++输入流函数主要以下几个:
1、cin
2、cin.get()
3、cin.getline()
4、getline()
附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符
1、cin>>

用法1:最基本,也是最常用的用法,输入一个数字:

#include <iostream>
using namespace std; 
void 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; 
void 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; 
void main () 
{ 
char ch; 
ch=cin.get();               //或者cin.get(ch); 
cout<<ch<<endl; 
}

输入:jljkljkl
输出:j

用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

#include <iostream> 
using namespace std; 
void 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.getline() // 接受一个字符串,可以接收空格并输出
此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为’\n’。其语法为:
cin.getline(字符指针(char*),字符个数N(int),结束符(char));

#include <iostream> 
using namespace std; 
void 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,结束字符)
//当第三个参数省略时,系统默认为’\0’
//如果将例子中cin.getline()改为cin.getline(m,5,’a’);当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

#include<iostream> 
#include<string> 
using namespace std;void 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; 
void main () 
{ 
string str; 
getline(cin,str); 
cout<<str<<endl; 
}

输入:jkljkljkl
输出:jkljkljkl

输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

getline()的原型是istream& getline ( istream &is , string &str , char delim );
其中 istream &is 表示一个输入流,譬如cin;string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)。
总结上面的解释,cin.get(),cin.getline()都要指定输入字符串的个数 ,
而getline()不需要指定字符串的个数,全部读入,而且从字面意思上看,就是将一行全部读入。如果这一行是由空格字符(空格字符=’ ‘或者可用isspace()检验)
分割的字符串,getline将其全部读入,我们可能想将分开的字符串分别读入两个变量中,这时可以使用stringstream或者istringstream来完成,见http://blog.csdn.net/xiamentingtao/article/details/45131959

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作环境总结(1)开发环境搭建

1、安装git 安装文件&#xff1a;Git-2.12.0-64-bit.exe 下载地址&#xff1a;https://github.com/git-for-windows/git/releases/download/v2.12.0.windows.1/Git-2.12.0-64-bit.exe 在git bash中配置&#xff0c;git bash命令行中执行&#xff08;只有使用到egit时使用&…

c语言烟花百度云,C语言实现放烟花的程序

这是一个利用C语言编写放烟花的程序(同时也可以播放音乐)&#xff0c;供大家参考&#xff0c;具体内容如下代码如下#pragma once#include#include //图形界面库头文件#include //计算圆形的轨迹坐标#include#include#include#include#pragma comment(lib,"winmm.lib"…

决定人生的七条公式

1 .积跬步以致千里&#xff0c;积怠惰以致深渊 1.01^365 37.80.99^365 0.032.拖延症 U EV/ID U完成任务的程度 E对成功的信心 V 对任务的愉悦度 I 你的分心程度 D你多久会获得回报3.三天打鱼两天晒网&#xff0c;终将一无所获 1.01^3 x 0.99^2 < 1.01 4.爱因斯坦的成…

strncpy与strcpy的区别与注意事项

strncpy 是 C语言的库函数之一&#xff0c;来自 C语言标准库&#xff0c;定义于 string.h&#xff0c;char *strncpy(char *dest, char *src, int n)&#xff0c;把src所指字符串的前n个字节复制到dest所指的数组中&#xff0c;并返回指向dest的指针。 strcpy只是复制字符串&am…

使用ssh公钥实现免密码登录

ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对&#xff0c;下面我以CentOS为例。 有机器A(192.168.1.155)&#xff0c;B(192.168.1.181)。现想A通过ssh免密码登录到B。 首先以root账户登陆为例。 1.在A机下生成公钥/私钥对。 [rootA ~]# ssh-keyg…

15款的视频处理软件免费下载

因为需要购买昂贵的视频处理软件和高性能图形计算机&#xff0c;所以视频处理是一项比较耗费金钱的技术活。正是由于这样&#xff0c;一部分人选择使用性能较好的免费在线编辑软件&#xff0c;无需太多视频处理知识便可在浏览器中剪切和编辑视频。然而&#xff0c;当我们无法连…

液位系统c语言程序,超声波自动测量物体液位系统的设计

超声波自动测量物体液位系统的设计(任务书,毕业论文15000字)摘要本系统以STC89C52单片机为核心&#xff0c;通过硬件电路连接和软件程序的编写实现通用型超声波自动测量物体液位系统的设计。其主要原理是由单片机控制超声波发射电路发射超声波&#xff0c;超声波接收电路接收遇…

android-sdk-windows版本号下载

Android SDK 4.0.3 开发环境配置及执行 近期又装了一次最新版本号的ADK环境 眼下最新版是Android SDK 4.0.3 本文的插图和文本尽管是Android2.2的 步骤都是一样的&#xff0c;假设安装的过程中遇到什么问题&#xff0c;能够留言&#xff0c;我会尽快回复&#xff01; 系统环境的…

string中c_str()、data()、copy(p,n)函数的用法

转载&#xff1a;http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html 标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组&#xff1a;c_str()、data()、copy(p,n)。 1. c_str()&#xff1a;生成一个const char*指针&#xff0c;指向以空字符终止…

POJ2402 Palindrome Numbers 回文数

题目链接: http://poj.org/problem?id2402 题目大意就是让你找到第n个回文数是什么. 第一个思路当然是一个一个地构造回文数直到找到第n个回文数为止(也许大部分人一开始都是这样的思路). 很明显找到第n个之前的所有操作都是浪费, 这也是这个方法的最大弱点. 抱着侥幸心理(谁知…

离散卷积的c语言编程实验,数字信号处理实验一离散卷积c语言编程.ppt

数字信号处理实验一离散卷积c语言编程实验一 离散卷积的C语言编程实验 DSP实验室 2005 实验性质 综合设计性实验 实验目的 1 了解和认识常用的各种信号&#xff1b; 2 掌握卷积的定义和计算方法&#xff1b; 3 掌握在计算机中生成以及绘制信号序列图的方法。 实验原理 离散时间…

async-await原理解析

在用async包裹的方法体中&#xff0c;可以使用await关键字以同步的方式编写异步调用的代码。那么它的内部实现原理是什么样的呢&#xff1f;我们是否可以自定义await以实现定制性的需求呢&#xff1f;先来看一个简单的例子&#xff1a; 1 class Test {2 public sta…

emacs-w3m查看html帮助手册

<?xml version"1.0" encoding"utf-8"?> emacs-w3m查看html帮助手册emacs-w3m查看html帮助手册 Table of Contents 1. 使用效果2. 为什么要用emacs-w3m来查看html的帮助手册&#xff1f;3. 什么是w3m?4. 配置5. 额外资源1 使用效果 使用快捷键C-c …

c语言生命游戏代码大全,c++生命游戏源码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼glViewport( 0, 0, width, height );glMatrixMode( GL_PROJECTION );glLoadIdentity( );}//程序入口int main(int argc, char *argv[]){//随机生成细胞的状态MapRand();std::cout<//SDL初始化const SDL_VideoInfo* info NULL;i…

初学React,setState后获取到的thisstate没变,还是初始state?

问题&#xff1a;(javascript)初学React&#xff0c;setState后获取到的thisstate没变&#xff0c;还是初始state&#xff1f;描述: getInitialState(){return {data:[]};},componentDidMount(){var data [ { author: "Pete Hunt", text: "This is one comment…

sizeof(数组名)和sizeof(指针)

转载&#xff1a;http://blog.csdn.net/kangroger/article/details/20653255 在做这道题时&#xff1a; 32位环境下&#xff0c;int *pnew int[10];请问sizeof(p)的值为&#xff08;&#xff09; A、4 B、10 C、40 D、8 我以为正确答…

工作中的问题

今天写一专题页面&#xff0c;写出的结果在各个浏览器下都不同&#xff0c;心情不好。。。 就是红线的地方老对不齐。。。 在朋友指导下改了下样式好了 右边代码结构 1 <div class"fr Img"> 2 <h3>相关专题</h3> 3 <a href"#"…

数组的sizeof

转载&#xff1a;http://blog.163.com/chen_xinghuan/blog/static/17220158220112182838196/ 数组的sizeof值等于数组所占用的内存字节数&#xff0c;如&#xff1a;   char a1[] “abc”;   int a2[3];   sizeof( a1 ); // 结果为4&#xff0c;字符 末尾还存在一个…

数据结构行编辑成簇 c语言,索引的数据结构及底层存储

索引是帮助数据库高效获取数据的数据结构索引的数据结构1.hash表a.利用hash存储的话需要将所有的数据文件添加到内存&#xff0c;比较耗费内存空间b.hash表存储的是无序数据&#xff0c;范围查找的时候需要挨个进行遍历&#xff0c;比较耗费时间。2.二叉树二叉树规定左子树必须…

卓同学的 Swift 面试题

我觉得应该掌握的知识点&#xff0c;没有实际意义。 class 和 struct 的区别不通过继承&#xff0c;代码复用&#xff08;共享&#xff09;的方式有哪些Set 独有的方法有哪些&#xff1f;实现一个 min 函数&#xff0c;返回两个元素较小的元素map、filter、reduce 的作用map 与…