平常筆記4關於cin、cin.get()、cin.getline()、getline()使用區別

1.關於PAT中段錯誤

使用字符數組出現錯誤: char str[256]; 報錯段錯誤,而後改用C++中的string 改爲: string str; 同char數組同樣,也可使用下標來取單個字符 可是還有區別就是,判斷字符長度 char str[256],使用int len = strlen(str); string str,使用int len = str.length();ios

2.關於輸入cin、cin.get()、cin.getline()、getline()使用

前言

在作PATB1033 舊鍵盤打字(20分)時,有一個答案錯誤一直沒有解決 只拿了19分,百思不得其解 而後我把cin >> str;換成getline(cin, str);問題解決 cin.getline()和getline()是兩回事。 cin.getline()是在#include <iostream> 而getline(cin,str)用法:接收一個字符串,能夠接收空格並輸出,需包含「#include <string>」數組

1. cin

結束條件:[enter],[space],[tab] 處理方法:cin遇到緩衝區中的[enter],[space],[tab]會結束當前輸入, 並捨棄[enter],[space],[tab],繼續下一項輸入, 當有連續[space],[enter,[tab]會所有捨棄。緩存

2. cin.get()

用法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;
}

3. cin.getline()

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

4. getline(cin,str)

用法:接收一個字符串,能夠接收空格並輸出,需包含「#include<string>」字符串

#include<iostream>
#include<string>
using namespace std;
main (){
string str;
getline(cin,str);
cout<<str<<endl;
}

5. 注意的問題

一、cin.getline()屬於istream流,而getline()屬於string流,是不同的兩個函數 二、當同時使用cin>>,getline()時,須要注意的是,在cin>>輸入流完成以後,getline()以前,須要經過 str="\n"; getline(cin,str); 的方式將回車符做爲輸入流cin以清除緩存,若是不這樣作的話,在控制檯上就不會出現getline()的輸入提示,而直接跳過,由於程序默認地將以前的變量做爲輸入流。get

相關文章
相關標籤/搜索