【C++学习笔记】数组的输入
2017-05-02 10:36
246 查看
字符串在C++中是特殊的存在(很多字符串函数,用字符串比用字符数组更方便,但是也导致字符串的使用方法和其他数组不同),因此在讨论数组问题是,都会把字符串单独拉出来说。
一、非字符串的输入方法
cin>>a[i];
本语句用于将键盘输入的信息储存在a[i]中。
使用cin不需要向C语言一样需要指出数据的类型,cin会直接按照之前对数组的类型声明,将输入的数据按照声明的类型储存在数组中。
使用cin输入数字的时候,会把回车留在缓冲区,如果后面还有别的输入,留在缓冲区的回车可能会导致意外结果。
为了防止出现这种情况,cin后面跟一个接收回车字符的函数吧。具体方法看下面。
二、字符串的输入方法
1、cin.getline(储存数组名,字符个数);
运行过程:本函数可以读入一行字符(回车为函数识别结束的位置)。如果读到回车,会把回车换成'\0'储存在字符串的最后;如果读到字符个数减一还没有遇到回车符,就会在最后一个位置上存入'\0'。
举例:cin.getline(name,20);
如果已经读了19个字符还没有遇到回车,数组的最后一个元素会存入'\0',即name[19] = '\0'.
2、cin.get(数组名,字符个数);
本函数和cin.getline()非常类似,只有一个区别:cin.getline()会接受回车并把回车换成'\0';cin.get()在读到回车时会把回车留在缓冲区。
所以使用cin.get()函数,请在函数后面,再使用一个输入函数接收那个回车,否则可能会导致意想不到的后果。
cin.get()函数有个变体——不含参的cin.get();
如果cin.get()不含参数,它会只接收一个字符,因此可以用下述方法去回收那个回车:
cin.get(name,30); //将字符串存入name数组,将回车留在了缓冲区
cin.get(); //用不含参的cin.get()接收字符串后的回车
虽然cin.get()函数有些使用上的麻烦,但是cin.get()函数有个好处,就是可以利用后面紧跟着的接收回车的函数返回值判断是否输入超过了数组的元素个数。
如果接收回车的函数接收到了回车,说明没有超过数组元素个数;如果接收回车的函数接收到了别的字符,说明输入超过了元素个数。
三、数字与字符串的混合输入(小结,最保险的处理方法)
为了防止回车的干扰,建议采用如下手段输入数字和字符
输入数字时使用下面的格式
(cin>>a).get;
它等同于
cin>>a;
cin.get; //cin>>a返回值仍然是cin类型,因此后面可以直接.get,相当于cin.get
输入字符串时,使用下面格式
cin.get(目标数组名,字符个数);
cin.get();//接收回车
一、非字符串的输入方法
cin>>a[i];
本语句用于将键盘输入的信息储存在a[i]中。
使用cin不需要向C语言一样需要指出数据的类型,cin会直接按照之前对数组的类型声明,将输入的数据按照声明的类型储存在数组中。
使用cin输入数字的时候,会把回车留在缓冲区,如果后面还有别的输入,留在缓冲区的回车可能会导致意外结果。
为了防止出现这种情况,cin后面跟一个接收回车字符的函数吧。具体方法看下面。
二、字符串的输入方法
1、cin.getline(储存数组名,字符个数);
运行过程:本函数可以读入一行字符(回车为函数识别结束的位置)。如果读到回车,会把回车换成'\0'储存在字符串的最后;如果读到字符个数减一还没有遇到回车符,就会在最后一个位置上存入'\0'。
举例:cin.getline(name,20);
如果已经读了19个字符还没有遇到回车,数组的最后一个元素会存入'\0',即name[19] = '\0'.
2、cin.get(数组名,字符个数);
本函数和cin.getline()非常类似,只有一个区别:cin.getline()会接受回车并把回车换成'\0';cin.get()在读到回车时会把回车留在缓冲区。
所以使用cin.get()函数,请在函数后面,再使用一个输入函数接收那个回车,否则可能会导致意想不到的后果。
cin.get()函数有个变体——不含参的cin.get();
如果cin.get()不含参数,它会只接收一个字符,因此可以用下述方法去回收那个回车:
cin.get(name,30); //将字符串存入name数组,将回车留在了缓冲区
cin.get(); //用不含参的cin.get()接收字符串后的回车
虽然cin.get()函数有些使用上的麻烦,但是cin.get()函数有个好处,就是可以利用后面紧跟着的接收回车的函数返回值判断是否输入超过了数组的元素个数。
如果接收回车的函数接收到了回车,说明没有超过数组元素个数;如果接收回车的函数接收到了别的字符,说明输入超过了元素个数。
三、数字与字符串的混合输入(小结,最保险的处理方法)
为了防止回车的干扰,建议采用如下手段输入数字和字符
输入数字时使用下面的格式
(cin>>a).get;
它等同于
cin>>a;
cin.get; //cin>>a返回值仍然是cin类型,因此后面可以直接.get,相当于cin.get
输入字符串时,使用下面格式
cin.get(目标数组名,字符个数);
cin.get();//接收回车
相关文章推荐
- 【C++学习笔记】如何输入含有未知变量的数组?
- C++学习笔记(四)——数组和指针
- C++数组类型学习笔记
- c++学习笔记之安全数组
- C/C++学习笔记2 - cin深入分析(上) - cin输入操作处理
- C++ FAQ学习笔记 15 章 通过 <iostream> 和 <cstdio>输入/输出
- C++学习笔记--数组
- C++学习笔记-2-数组
- 【C++数据结构学习笔记---栈】用数组实现栈
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- C/C++学习笔记(二)数组、字符
- C/C++学习笔记:指针与数组
- C++基础教程 学习笔记(二) 数组、字符串和指针
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- 2012/2/11 《C++ Primer Plus》第十七章:输入、输出和文件 学习笔记
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
- c++学习笔记(数组)
- C++ Primer学习笔记2--c++中的数组和指针
- C++学习笔记--指针和多维数组