C++中的getline()
然而有些同学误以为while判断语句的判断对象是line(也就是line是否为空),然后想通过直接回车(即输入一个空的line)跳出循环,却发现怎么也跳不出循环。这是因为你的回车只会终止getline()函数的读入操作。getline()函数终止后又进行while()判断(即判断输入流是否有效,你的输入流当然有效,满足条件),所以又运行getline()函数,导致程序永远跳不出循环。
- void test_input()
- {
- char ch1,ch2[10];
- cout<<"请输入字符串:"<<endl;
- cin.getline(ch2,6);//在不遇到结束符的情况下,最多可接收6-1=5个字符到ch2中
- cin>>ch1;
- cout<<ch2<<endl;
- cout<<ch1<<"\n"<<(int)ch1<<endl;
- }
- 测试:如下图,输入zifuchuan[Enter],长度大于最大长度5,就会导致cin函数错误,其后既没有像cin.get()一样直接从输入缓冲区直接读数据,也没有从键盘输入。所以此处可以注意,考虑在用cin.getline()时,适度设置其最大接受长度大一点。
cin.getline()
此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为'\n'。其语法为:
cin.getline(字符指针(char*),字符个数N(int),结束符(char));
- #include "stdafx.h"
- #include<iostream>
- #include <stdio.h>
- #include <string>
- using namespace std;
- int main()
- {
- char a[30];
- cout << "请输入一个字符串:" << endl;
- cin.getline(a, 10);//第10位存放字符串结束符'\0'
- for (int i = 0; i<10; i++)
- cout << "第"<<i+1<<"个值为:"<<a[i] << endl;
- return 0;
- }
输入:1234567890123
输出:1 2 3 4 5 6 7 8 9 _ (第10位存放字符串结束符'\0')
引自https://blog.csdn.net/livecoldsun/article/details/25489429和https://blog.csdn.net/u013660169/article/details/41726973和https://blog.csdn.net/xumengxing/article/details/6664436和https://blog.csdn.net/duan19920101/article/details/50782816
C++中的getline()的更多相关文章
- C/C++中的getline函数总结:
来自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html C/C++中的getline函数总结 getline函数是一个比较 ...
- c++中basic_istream::getline()的返回值何时为真
今天在看primer,17ch中的IO库再探,做课后练习,要求用ifstream.getline(char*, const unsigned, char)读取一个文件,用循环: while(ifs.g ...
- C++中cin.getline与cin.get要注意的地方
cin.getline与cin.get的区别是,cin.getline不会将结束符或者换行符残留在输入缓冲区中.
- string 中的getline
1 getline 读入string库中的字符串 string a; getline(cin,a); 这样的读入要比任何一种读入字符串都有要快 2 char a[N]; cin.getline(a, ...
- C++中的getline
https://www.cnblogs.com/ymd12103410/p/9514896.html#undefined
- C++中关于cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: 注意:>> 是会过滤掉不可见的字符(如 空格 回车,TAB 等) cin>>noskipws> ...
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法----细节决定成败 (sort用法)
C++中cin.cin.get().cin.getline().getline().gets()等函数的用法 学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有 ...
- c++中获取字符cin,getchar,get,getline的区别
http://www.imeee.cn/News/GouWu/20090801/221298.html cin.get()与getchar()函数有什么区别? 详细点..C++中几个输入函数的用法和区 ...
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get ...
随机推荐
- 3DMAX 批量 场景 对象 导出 .X格式 脚本
一.首先你需要下载一个 Total Commader文件管理软件.利用这个软件你可以收集文件夹下包含子文件夹下的max文件(或完整路径)打开TotalCMD后使用查找文件:(如图红框中的操作)1. 2 ...
- CFDA
cfda数据抓取 1.网站数据是加密的,需要浏览器进行数据解析 2.网址url有js加密 3.PhantomJS无法解析数据, chrome无法获取数据,所有最终选择用Firefox浏览器 impor ...
- SPSS-方差分析
方差分析(单因素方差分析.多因素方差分析.协方差分析) 基本概念:进行两组以上均数的比较,检验两个或两个以上样本均数差别的显著性(T检验主要是检验两个样本均数差别的显著性) ...
- 人脸识别 1:1 和1:n
- 电脑cpu100%的原因
这个本地系统占很高的cpu,主要原因是我关机之后,没有关透又重启了,就是管了机之后等10几秒再开机会好
- 第三章,DNA序列的进化演变
31.前言 3.1.两个序列间的核苷酸差异 来自同一祖先序列的两条后裔序列,之间的核苷酸的差异随着时间的增加而变大.简单的计量方法,p距离 3.2.核苷酸代替数的估计 3.3.Jukes和Cantor ...
- MySql数据类型范围
[MySql数据类型范围] 参考:http://blog.sina.com.cn/s/blog_4f925fc30102edg8.html
- STL::forward_list
forward_list(c++11): 内部是一个单链表的实现:但是为了效率的考虑,故意没有 size 这个内置函数. Constructor 六种构造方式default; fill; range; ...
- kafka集群压力测试--基础。
1.生产者测试 kafka-producer-perf-test.bat --num-records 1000000 --topic test --record-size 200 --throughp ...
- Openstack 集群,及常用服务的 高可用 haproxy配置
一.介绍 配置文件位置(yum 安装):/etc/haproxy/haproxy.cfg 全局配置 #------------------------------------------------- ...