马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.cin
(1)cin>>等价于cin.operator>>(),即调用成员函数operator>>()进行读取数据。
(2)当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab 或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等候。但是假如读取乐成,字符背面的分隔符是残留在缓冲区的,cin>>不做处理。假如后续接getline()要记得处理换行符!
(3)不想略过空白字符,那就使用 noskipws 流控制。比如cin>>noskipws>>input;
- using namespace std;
- int main()
- {
- char n,m,k,p,q;
- cin>>std::noskipws>>n>>m>>k>>p>>q;//保留空格 cout<<n<<endl;
- cout<<m<<endl;
- cout<<k<<endl;
- cout<<p<<endl;
- cout<<q<<endl;
- system("pause");
- }
- 输入:q w e a z
- 输出:
- q
- w
- e
- #include<iostream> #include<string> using namespace std;
- int main ()
- {
- char a;
- cin>>a;//cin不吃掉换行符的,在缓存里面还有换行符。
- char b[10];
- cin.getline(b,10);//这行语句不成功,因为换行符没有被吃掉
- cout<<a<<endl;
- cout<<b<<endl;
- system("pause");
- }
复制代码 2.cin.get()
单用cin.get()只能读取此中一个字符,不能存储为string全部的字符,若要存储全部则必须传入一个数组以及长度
- using namespace std;
- main ()
- {
- char a[n];
- cin.get(a,n); //实际包括空格只能存n-1个字符,最后一个字符是'\n'以回车作为结束符。
- cout<<a<<endl;
- system("pause");
- }
复制代码 3.getchar()
缓冲区会把’enter’这个字符写进gets(str2),这时程序就会像上面那样,直接结束.而加了getchar();它会吃了缓冲区里的’enter’字符,这时间缓冲区才是真的什么都没有
4.cin.getline()
接受一个字符串,可以接收空格并输出,吃掉末尾的换行符的。
- using namespace std; int main ()
- {
- char m[20]; cin.getline(m,5); cout<<m<<endl;
- }
- 输入:jkljkljkl
- 输出:jklj
- 接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;
复制代码 延伸:
cin.getline()现实上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
当第三个参数省略时,系统默认为’\0’
假如将例子中cin.getline()改为cin.getline(m,5,‘a’);当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
当用在多维数组中的时间,也可以用cin.getline(m,20)之类的用法:
- using namespace std;
- int main ()
- {
- char m[3][20];
- for(int i=0;i<3;i++)
- {
- cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;
- cin.getline(m[i],20);
- }
- cout<<endl;
- for(int j=0;j<3;j++)
- cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
- }
- 请输入第1个字符串: kskr1
- 请输入第2个字符串:
- kskr2
- 请输入第3个字符串:
- kskr3
- 输出m[0]的值:kskr1 输出m[1]的值:kskr2 输出m[2]的值:kskr3
复制代码 5.getline()
接受一个字符串,可以接收空格并输出,
- using namespace std;
- int main ()
- {
- string str;
- getline(cin,str); //和cin.getline()一样可以按某个字符结尾
- cout<<str<<endl;
- }
- 输入:jkljkljkl 输出:jkljkljkl
- 输入:jkl jfksldfj jklsjfl 输出:jkl jfksldfj jklsjfl
- 和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |