c++ getline正确读取多行内容

您所在的位置:网站首页 字符串getline c++ getline正确读取多行内容

c++ getline正确读取多行内容

2024-07-12 17:40| 来源: 网络整理| 查看: 265

1.     Std::cin>> s 是无法读入换行和空格

2.     当前面的std::cin>>w;输入数字之后,数字存储在输入缓冲区,敲回车,输入的数字因为回车的原因传给了w,但是换行符仍然滞留在输入流了,如果在std::cin>>w 后面有着getline语句,这个换行符就被这个getline读取了,发现getline结果为空

3.     cin.getline()不会把’\0’, ‘ ‘, ‘\n’等默认的分隔符写入到字符数组,因此如果在std::cin>>w后面紧接着的cin.getline语句(可以尝试把ignore()语句注释掉),会变为空读入,再后面的cin.getline()就正常读入每一行内容,并且把读入的分隔符舍弃。

4.      cin.getline(char*,numBuff, char delimeter) 和gets(char*)函数,均可以正常得读入输入行. 参数含义:cin.getline(接收字符串的变量,接收字符个数,结束字符)

5.    注意getline的缓冲区大小设置:如果每行字符个数最多为5,则cin.getline的第二个参数必须为大于等于6,要考虑读入换行符写入缓冲区,5个输入字符+换行符,缓冲区保存了这6个字符。接着cin.getline会自动把换行符扔掉,不会写入字符数组的最后。如果buffsize设置为5,会导致遇到有一行的输入为5个字符,则本行只能读入前4个输入字符,并且后面所有的cin.getline失效。(可以把本文CODE2中的6改为5,3,观察结果)

6.      std::cin.ignore(); 和     std::cin.get();//cin.get()都可以用于舍弃输入流中不需要的字符

7.     再说说另外一个getline函数,属于的,跟cin.getling一样如果输入缓冲中有换行符,需要读入一个空行来消耗此换行符,后面继续的读入才会正常。使用如下:

CODE 1 中getline函数的使用

#include #include using namespace std; int main() { string s; int n; cin>>n; cin.ignore(); for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3