使用字符数组出现错误: char str[256]; 报错段错误,而后改用C++中的string 改为: string str; 同char数组同样,也可使用下标来取单个字符 可是还有区别就是,判断字符长度 char str[256],使用int len = strlen(str); string str,使用int len = str.length();ios
在作PATB1033 旧键盘打字(20分)时,有一个答案错误一直没有解决 只拿了19分,百思不得其解 而后我把cin >> str;换成getline(cin, str);问题解决 cin.getline()和getline()是两回事。 cin.getline()是在#include <iostream> 而getline(cin,str)用法:接收一个字符串,能够接收空格并输出,需包含“#include <string>”数组
结束条件:[enter],[space],[tab] 处理方法:cin遇到缓冲区中的[enter],[space],[tab]会结束当前输入, 并舍弃[enter],[space],[tab],继续下一项输入, 当有连续[space],[enter,[tab]会所有舍弃。缓存
用法1: a = cin.get()或者cin.get(a) 结束条件:输入字符足够后,回车,意思是只有当知足输入条件后的字符数, 而后回车才会结束。[enter],[space],[tab]不会被舍弃。 说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中函数
用法2:cin.get(arrayname,size) 把字符输入到arrayname中,长度不超过size 注释:arrayname必须是char[]类型,即char数组类型,不能够为string类型;size是指输入长度,即容许输入的最大长度。 处理方法:假设把数据输入到 char a[arraylength],数组长度为arraylength。cin.get(a,size)---size,arraylength不一样能够分为四类:spa
用法3:用法:cin.get(arrayname,size,s) 把数据输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束 注释:a必须是字符数组,即char a[]l类型,不可为string类型;size为最大的输入长度;s为控制,遇到s则当前输入结束缓存区里的s将被舍弃code
#include<iostream> using namespace std; int main(){ int i; char a[10]; cin.get(a,10,'.'); cout<<a; }
cin.getline()的用法和cin.get()用法大体相同,没有一参数用法,只有二参数,三参数两类 cin.gerline(arrayname,size) cin.getline(arrayname,size,s)用法与cin.get()效果大体相同,但也有些区别 (1)cin.getline(arrayname,size)与cin.get(arrayname,size)的区别 cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter] cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,可是会删除缓冲区中的[enter]ci
用法:接收一个字符串,能够接收空格并输出,需包含“#include<string>”字符串
#include<iostream> #include<string> using namespace std; main (){ string str; getline(cin,str); cout<<str<<endl; }
一、cin.getline()属于istream流,而getline()属于string流,是不同的两个函数 二、当同时使用cin>>,getline()时,须要注意的是,在cin>>输入流完成以后,getline()以前,须要经过 str="\n"; getline(cin,str); 的方式将回车符做为输入流cin以清除缓存,若是不这样作的话,在控制台上就不会出现getline()的输入提示,而直接跳过,由于程序默认地将以前的变量做为输入流。get