c++中 cin,cin.getline(),cin.get()的区别 cin, cin.getline(), cin.get()都是c++中的输入语法 cin: 一:cin的使用格式: 二:cin的读取输入时遇到空白符(空格 ,回车,制表符)的处理方法: cin在不同位置遇到空白符有不同的处理方法 1:在行首遇到空白符,会直接忽略空白符(如果行首有多个空白符也会忽略多个空白符)读取下一个字符。
2:在行首以外的位置遇到空白符,被cin作为停止的标志(如果遇到除行首之外的空白符,cin会停止读取,并将空白符留在缓冲区)
cin.getline() 一:cin.getline()的作用: cin.getline的作用是一次可以读取一整行的字符 (也是跟cin的区别所在,cin由于遇到空白符就停止输入,所以一次只能读取一个单词, 一直到换行符,也就是通过换行符来确定输入结尾。 二:cin.getline()的使用 1:cin.getline()接受两个参数,第一个参数是 用来存储输入行的数组名称, 第二个参数是 要读取的字符数
如果 输入的字符数 超过了cin.getline的第二个参数我,则会截断输入的字符数到 第二个参数的值
如果你数一下cout输入来的name值发现只有19个字符数,并没有20个的原因是因为 cin.getline读取时会在读入的字符串末尾自动加上’0’,所以还要留一个空间给’0’,因此cin.getline最多只能从缓冲区里面读取 第二个参数-1的字符串 2:cin.getline结束的两种情况: 第一种就是 cin.getline在没有读满 第二个参数-1 个之前,就读到了换行符,这时cin.getline将停止读入。 这种情况要注意的是 cin.getline 对 换行符 的处理(与下面要讲的 cin.get 的区别就在这里),cin.getline会将 换行符 读入 数组 中,之后将读入数组中的 换行符 替换成 ‘o’; 第二种就是上面讲到的读到了 第二个参数-1位字符,比如第二个参数为20,则cin.getline读到了第19位就停止读取了(其他未读取到的字符将留在缓冲区),而数组中的第20位则被cin.getline 自动添加’0’; cin.get(): 1:cin.get()的作用: cin.get()的作用与cin.getline的作用一样,都是读取一整行的输入。 2:cin.get()的使用: cin.get()也接受的两个参数 第一个参数是 用来存储输入行的数组名称, 第二个参数是 要读取的字符数(与cin.getline接受的参数一样)
3:cin.get与cin.getline的区别 其实cin.get与cin.getline很多东西都是一样的,只有一点不一样 就是在用户输入回车后,对换行符的处理方式; cin.getline对 换行符 的处理是将 换行符 读入数组中并将 换行符 替换成‘0’; cin.get对 换行符 不读取,将换行符留着缓冲区中; 因此如果连续使用cin.get将出现一个问题
代码中使用了2个cin.get()分别读取字符到name和name2数组中,程序读取字符到name数组中没有问题,问题出在当程序需要输入给name2的字符时,直接结束程序了; 这就是换行符留在缓存区造成的问题,因为第一次使用cin.get()时输入换行符留在缓冲区里面,因此当第二次使用cin.get()时,cin.get()会先读取缓冲区的换行符,cin.get()读到换行符表示输入完成,因此程序没有等你输入就直接结束了; 解决方法:在c++中提供了一个 cin.get(两个参数) 的变体,就是 cin.get(没有参数) 这一个变体不需要传入任何参数,这一个变体的作用就是读取缓冲区的下一个任意字符(也包括换行符);
上面的代码通过cin.get(没有参数)这个函数将缓冲区的 换行符 给读取了,因此缓冲区中没有换行符,cin.get(name2,20)可以正常运行; 变体cin.get(); 1:变体cin.get()的使用 变体cin.get()的作用是读取缓冲区的下一个字符,存储到括号里面的变量,因此cin.get(ch),代表把读取缓冲区的下一个字符,存到ch里面去,cin.get()代表读取缓冲区的下一个字符,但是不存入如何位置;
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/48272.html