(參看鏈接:https://blog.csdn.net/weixin_44307065/article/details/99683520)
一、字符輸入(定義char c)
函數 |
用法 |
說明 |
cin |
cin>>c |
不讀取空格以及換行,不會從流中去掉換行和空格 |
scanf |
scanf(“%c”,&c) |
可讀取換行和空格 |
cin.get() |
c=cin.get() cin.get(c) cin.get() |
可讀取換行和空格,可不賦值僅讀取一個字符
(常用於過濾流中換行) |
getchar() |
c=getchar() getchar() |
可讀取換行和空格,可不賦值僅讀取一個字符 (常用於過濾流中換行) |
二、輸入字符數組輸入(定義char s[])
函數 |
用法 |
說明 |
cin |
cin>>s |
以換行和空格為結束標志,不讀取換行和空格,不會從流中去掉換行空格 |
scanf |
scanf(“%s”,s) |
以換行和空格為結束標志,不讀取換行和空格,不會從流中去掉換行空格(注意變量列表中不帶&) |
gets() |
gets(s) |
以換行為結束標志,可讀取空格,將換行從流中去掉 |
cin.get() |
cin.get(s,n) cin.get(s,n,c) |
以換行為結束標志 以字符c為結束標志,當讀入的字符數超過n-1時也會結束(第n位補’\0’)可讀取空格,且不會將換行( c )從流中去掉 |
cin.getline() |
cin.getline(s,n) cin.getline(s,n,c) |
以換行為結束標志 以字符c為結束標志,當讀入的字符數超過n-1時也會結束(第n位補’\0’)可讀取空格,將換行( c )從流中去掉 |
三、字符串輸入(定義string s)
cin |
cin>>s |
以換行和空格為結束標志,不讀取換行和空格,不會去掉換行空格 |
getline() |
getline(cin,s) getline(cin,s,c) |
前者以換行為結束標志,后者以字符c為結束標志,可讀取空格,將換行( c )從流中去掉 |
值得注意的是,以換行為結束標志的函數在它開始讀入之前不能有換行否則會自動結束,這個時候要在之前加上getchar()去掉換行
四、cin、cin.get()、cin.getline()、getline()的區別
參看鏈接:https://blog.csdn.net/a3192048/article/details/80303547
C/C++輸入字符以及字符串
一、字符輸入(定義char c)
函數 |
用法 |
說明 |
cin |
cin>>c |
不讀取空格以及換行,不會從流中去掉換行和空格 |
scanf |
scanf(“%c”,&c) |
可讀取換行和空格 |
cin.get() |
c=cin.get() cin.get(c) cin.get() |
可讀取換行和空格,可不賦值僅讀取一個字符 |
getchar() |
c=getchar() getchar() |
可讀取換行和空格,可不賦值僅讀取一個字符 |
二、輸入字符數組輸入(定義char s[])
函數 |
用法 |
說明 |
cin |
cin>>s |
以換行和空格為結束標志,不讀取換行和空格,不會從流中去掉換行空格 |
scanf |
scanf(“%s”,s) |
以換行和空格為結束標志,不讀取換行和空格,不會從流中去掉換行空格 |
gets() |
gets(s) |
以換行為結束標志,可讀取空格,將換行從流中去掉 |
cin.get() |
cin.get(s,n) cin.get(s,n,c) |
前者以換行為結束標志,后者以字符c為結束標志,當讀入的字符數超過n-1時也會結束(第n位補’\0’)可讀取空格,且不會將換行( c )從流中去掉 |
cin.getline() |
cin.getline(s,n) cin.getline(s,n,c) |
前者以換行為結束標志,后者以字符c為結束標志,當讀入的字符數超過n-1時也會結束(第n位補’\0’)可讀取空格,將換行( c )從流中去掉 |
三、字符串輸入(定義string s)
cin |
cin>>s |
以換行和空格為結束標志,不讀取換行和空格,不會去掉換行空格 |
getline() |
getline(cin,s) getline(cin,s,c) |
前者以換行為結束標志,后者以字符c為結束標志,可讀取空格,將換行( c )從流中去掉 |
值得注意的是,以換行為結束標志的函數在它開始讀入之前不能有換行否則會自動結束,這個時候要在之前加上getchar()去掉換行