日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++最全输入方式总结(cin、get、getchar、getline)

發布時間:2025/3/15 c/c++ 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++最全输入方式总结(cin、get、getchar、getline) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

寫在前面:

一、輸入方式

1.cin>>

2.cin.get()

3.cin.getline()

下面介紹幾個string的輸入:

4.getline()

5.gets()

6.getchar()

二、輸入控制

三、例子


寫在前面:

主要注意的包括以下幾個點(重要性不分先后):

1.輸入參數

2.結束標志

3.是否會將沒輸入的繼續放在輸入流

4.返回值

5.針對字符、數字及字符、字符串的哪種情況

一、輸入方式

1.cin>>

1)最常見的是獲取輸入的一個字符數字(后面會介紹只輸入字符的情況),如

int a,b;

cin>>a>>b;

注意:cin>>會自動過濾掉不可見字符(如空格 回車 tab等)。

若不想過濾掉空白字符,可以用noskipws流進行控制。如下程序,沒有過濾掉不可見字符,輸入的空格字符存入了input[1]中,也可輸出。

#include<iostream> using namespace std; int main() {int input[5];for (int i = 0; i < 5; i++) cin >> noskipws >> input[i];for (int i = 0; i < 5; i++)cout << input[i] << endl;system("pause");return 0; }

2)獲取輸入的字符串,可以用數組或string類型。如

char a[20];cin>>a;cout<<a<<endl;

或者string類型:

string s;cin>>s;cout<<s<<endl;

?注意:遇到空格、回車等會結束獲取輸入的字符串,后面的字符串會過濾掉(存放在輸入流中)。如果后面還需要輸入字符串,則會從前面存放的字符串開始獲取。

比如將輸入存在一個數組中,中途若遇見空格,則只會將空格前面的內容放入數組。

#include <bits/stdc++.h> using namespace std;int main() {int c[20];cin >> c;cout << c;system("pause");return 0; }

2.cin.get()

此函數從輸入流中讀入一個字符(char 非int,如果定義數組或變量為int就會出錯!),返回值就是該字符的 ASCII 碼。如果碰到輸入的末尾,則返回值為 EOF。
EOF 是 End of File 的縮寫。istream 類中從輸入流(包括文件)中讀取數據的成員函數,在把輸入數據都讀取完后再進行讀取,就會返回 EOF。EOF 是在 iostream 類中定義的一個整型常量,值為 -1。
get() 函數不會跳過空格、制表符、回車等特殊字符,所有的字符都能被讀入。

1)cin.get(字符變量名),用來接收字符,只獲取一個字符,可以接收空格,遇回車結束

#include <bits/stdc++.h> using namespace std;int main() {char c[20];for (int i = 0; i < 20; i++)cin.get(c[i]);for(int i =0; i < 20; i++)cout << c[i];system("pause");return 0; }

2)cin.get(數組名,接收字符數目),用來接收字符串,可以接收空格,遇回車結束。

注意:數組的最后一個字符會是‘\0’,設接收字符數目為n,如果輸入的字符串大于等于n,則實際接收到的輸入是字符串的前面n-1個字符,包括空格(不包括回車,遇到回車就結束了),會自動在后面增加一個‘\0’。所以預設數組大小時要比實際輸入大小大1.

注意:此時不需要循環輸入了!!!

#include <bits/stdc++.h> using namespace std;int main() {char c[3];cin.get(c, 3);cout << c; //輸出只會有2個 因為結尾占位了system("pause");return 0; }

3)cin.get(),沒有參數,主要用于舍棄輸入流中不需要的字符,或者舍棄回車,即舍棄輸入流中的一個字符(注意!是緊接著的一個字符!)。

#include <bits/stdc++.h> using namespace std;int main() {char c[3], d[2];cin.get(c, 3);cin.get(d, 2);cout << c << endl;cout << d<< endl;system("pause");return 0; }

沒有用cin.get(),則后面的3會從輸入流中繼續讀入

有cin.get(),則2后面的3被省略了。

#include <bits/stdc++.h> using namespace std;int main() {char c[3], d[2];cin.get(c, 3);cin.get();cin.get(d, 2);cout << c << endl;cout << d<< endl;system("pause");return 0; }

3.cin.getline()

注意:這是讀取字符!后面還會介紹getline讀取字符串!別搞混了。

getline() 是 istream 類的成員函數,它有如下兩個重載版本:

istream & getline(char* buf, int bufSize); istream & getline(char* buf, int bufSize, char delim);

第一個版本從輸入流中讀取 bufSize-1 個字符到緩沖區 buf,或遇到\n為止(哪個條件先滿足就按哪個執行)。函數會自動在 buf 中讀入數據的結尾添加\0。

第二個版本和第一個版本的區別在于,第一個版本是讀到\n為止,第二個版本是讀到 delim 字符為止。\n或 delim 都不會被讀入 buf,但會被從輸入流中取走。

這兩個函數的返回值就是函數所作用的對象的引用。如果輸入流中\n或 delim 之前的字符個數達到或超過 bufSize,就會導致讀入出錯,其結果是:雖然本次讀入已經完成,但是之后的讀入都會失敗。

從輸入流中讀入一行,可以用第一個版本。用cin >> str這種寫法是不行的,因為此種讀法在碰到行中的空格或制表符時就會停止,因此就不能保證 str 中讀入的是整行。

總結來說就是,接收一個字符串,可以接收空格等,最后一個字符為‘\0’。結束符可以通過設置第三個參數自己設置,默認是回車。m不能為string類型。

經常會遇到需要從輸入流中讀入一行的情況,可以用第一個版本,因為以回車符為結束標志。用cin >> str這種寫法是不行的,因為此種讀法在碰到行中的空格或制表符時就會停止,因此就不能保證 str 中讀入的是整行。

1)cin.getline(變量名, 輸入大小)默認結束方式

#include <bits/stdc++.h> using namespace std;int main() {char c[3];cin.getline(c, 3);cout << c << endl;system("pause");return 0; }

2)自定義結束標志

#include <bits/stdc++.h> using namespace std;int main() {char c[5];cin.getline(c, 5, '3');cout << c << endl;system("pause");return 0; }

下面介紹幾個string的輸入:

4.getline()

注意:這不是cin.getline() !!!!!.

用于string類的。使用需包含頭文件#include<string>。getline(cin,string s),接收一個字符串,可以接收空格、回車等

與cin.getline()的區別:

? ? ? ? ? ? ? 1.cin.getline()接收輸入字符串的是數組,getline()是string類型。

? ? ? ? ? ? ? 2.cin.getline()可以接收空格,但不能接收回車;getline()可以接收空格和回車

? ? ? ? ? ? ? 3.cin.getline()會在數組結尾是'\0',getline()不會

// This program illustrates using the getline function //to read character data into a string object. #include <iostream> #include <string> // Header file needed to use string objects using namespace std;int main() {string name;getline(cin, name);cout << name << endl;return 0; }

雖然getline也用了cin,但是他們存在區別:

cin與getline()的區別:

? ? ? ? ? ? ? ?getline()中的結束符,結束后,結束符不放入緩存區;

? ? ? ? ? ? ? ?cin的結束符,結束后,結束符還在緩存區;

?所以在使用 cin 后若要使用 getline() 必須要把前面cin遺留的結束符處理掉,解決方法為:在使用getline()之前,加入一行getline()來處理cin留下的結束符;代碼如下:

#include <bits/stdc++.h> using namespace std; int main() {string str1;int x;cin>>x;getline(cin,str1);while(x--){getline(cin,str1);cout<<str1<<"\n";}return 0; }

5.gets()

gets(m)用于string類的,需包含#include<string>??梢越邮湛崭?#xff0c;遇回車結束。

#include <iostream> #include <cstring>//必須是cstring,否則strlen()方法不能用 #include <stdio.h> using namespace std;int main() {char a[40000];gets(a);//必須是char型數組,不能是其他類型數組int len=strlen(a);//得到char型數組的實際長度//執行其余操作return 0; }

可用于多維數組。

  #include<iostream>#include<string>using namespace std;main (){char m[3][20];for (int i = 0; i < 3; i++){cout << "\n請輸入第" << i + 1 << "個字符串:" << endl;gets_s(m[i]);}cout << endl;for (int j = 0; j < 3; j++) {int len = strlen(m[j]);//得到char型數組的實際長度for (int k = 0; k < len; k++)cout << "輸出m[" << j << k << "]的值:" << m[j][k] << endl;}}

6.getchar()

?m=getchar(),需包含#include<string>

getchar()是C語言中的函數,C++中也包含了該函數。getchar()函數的作用是從標準的輸入stdin中讀取字符。也就是說,getchar()函數以字符為單位對輸入的數據進行讀取。

在控制臺中通過鍵盤輸入數據時,以回車鍵作為結束標志。當輸入結束后,鍵盤輸入的數據連同回車鍵一起被輸入到輸入緩沖區中。在程序中第一次調用getchar()函數從輸入緩沖區中讀取一個字節的數據。需要注意的是,如果此時在程序中第二次調用getchar()函數,因為此時輸入緩沖區中還有回車鍵的數據沒有被讀出,第二個getchar()函數讀出的是回車符。

getchar( )只能接收一個字符。getchar函數得到的字符可以賦給一個字符變量或整型變量,也可以不賦給任何變量,作為表達式的一部分。通??梢杂盟鼇斫鉀Q多行輸入時存在的回車符(從流中取走回車符)

#include <stdio.h> #include<ctype.h> int main() {int N;int num[10000];int j = 0;do { //因為第一個是數字 第二個才是空格,所以用do 不然會丟失第一個數scanf_s("%d", &num[j++]);} while (getchar() != '\n');scanf_s("%d", &N);for (int i = 0; i < j; i++) {printf("%d ", num[i]);}return 0; }

二、輸入控制

比如輸入進制控制:

https://blog.csdn.net/qq_41687938/article/details/116713651?spm=1001.2014.3001.5501

其他一些十分經典的使用方法及實例。

https://blog.csdn.net/qq_41687938/article/details/116535989?spm=1001.2014.3001.5501

三、例子

https://blog.csdn.net/qq_41687938/article/details/116535989?spm=1001.2014.3001.5501

總結

以上是生活随笔為你收集整理的C++最全输入方式总结(cin、get、getchar、getline)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲无码精品一区二区三区 | 丰满双乳秘书被老板狂揉捏 | 精品人妻人人做人人爽夜夜爽 | av中文字幕在线看 | 一级免费黄色 | 中文字幕高清一区 | 真人真事免费毛片 | 2019亚洲天堂 | 美女扒开尿口让男人爽 | 美女色诱男人激情视频 | 五月激情婷婷综合 | 肉色丝袜脚交一区二区 | 青娱乐福利视频 | caoporen超碰| 69成人网 | 永久免费看黄 | 91欧美精品| 色婷婷一区二区三区 | 久久婷婷五月综合色国产香蕉 | 麻豆视频在线观看免费网站黄 | 欧色丰满女同hd | 91激情视频在线观看 | 国产精品--色哟哟 | 芭乐视频色 | 裸体按摩www性xxxcom | 大色综合| 校园春色亚洲激情 | 动漫av网站| 日韩精品资源 | jizzjizz黄大片 | 成年人免费黄色片 | 福利视频一区二区 | 久久天堂av | 99riav国产在线观看 | 久热草| 国产欧美日韩久久 | 亚洲 欧美 激情 另类 校园 | 欧美精品1区2区 | 日女人网站| 天天伊人网 | 精品国产精品三级精品av网址 | 欧美人与禽性xxxxx杂性 | 国产第八页 | 国产无码日韩精品 | 肉性天堂| 天天躁日日躁狠狠很躁 | 无套内谢的新婚少妇国语播放 | 天天舔天天舔 | 懂色av一区二区三区免费观看 | 成人在线激情视频 | 亚洲黄色精品 | 色呦呦中文字幕 | 中文字幕资源网 | 国产私人影院 | 日剧再来一次第十集 | 久久国语对白 | 日本加勒比中文字幕 | 国产白浆一区二区 | avtt在线播放 | 久久精品123 | 校园春色亚洲 | 久久久久久久久久综合 | 国产高清第一页 | 在线免费观看的av | 非洲黄色一级片 | 香蕉久草 | 国产最爽的乱淫视频国语对白 | 日本不卡高字幕在线2019 | 波多野结衣av一区二区全免费观看 | 欧美三日本三级少妇三级99观看视频 | 亚洲精品视频91 | 草草影院地址 | 免费在线观看污 | 午夜黄色福利 | 一区二区免费在线观看视频 | www五月 | 日本高清在线一区 | 91九色网 | 天降女子在线 | 青青草免费在线观看 | av在线免| 91网站观看 | 在线成人av | 国产午夜精品免费一区二区三区视频 | 九九综合九九综合 | 爱啪啪导航 | 亚洲欧美日韩国产综合 | 91视频在线免费观看 | 国产人久久人人人人爽 | 亚洲精品电影网 | 毛片免费视频 | 日批在线视频 | 国产午夜精品一区二区三区 | 精品伦精品一区二区三区视频 | 国产又粗又猛又爽又黄 | www.av日韩| 亚洲人妻一区二区 | 日韩精品极品视频 | 天天干天天色天天射 |