c++中字符輸入函數getline、cin.getline區分

1、cin>>s; s可以是:string  s、char s[];

這個是ostream中的函數,遇到‘ ’(空格) , '\n'(換行),就會自動結束,因此如果用cin讀取字符串,那麼這個字符串中不能含有空格和換行。

cin因爲不識別空格和換行,因此如果在輸入字符串的時候,在字符開始處輸入了空格或換行,沒有任何影響。

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;


int main()
{
    string s;
    int n;
    while(cin>>s)
    {
        cout<<s<<endl;
    }
}

2、getline(cin , s , '\n') , s只能是 string s

getline屬於string類的字符讀取函數,這個函數的第三個參數可以不寫(getling(cin , s)),第三個參數默認是'\0',這種情況下如果要結束一個字符串輸入,對於有些編譯器(VC , VS), 必須得連續輸入兩個換行。

對於getline(cin , s , 'z') ,能識別空格和換行

對於getline只要截止字符(第三個參數)設置得當,能讀取多行

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;


int main()
{
    string s;
    int n;
    while(getline(cin , s , 'z'))
    {
        cout<<s<<endl;
    }
}

3、cin.getline(s , 100 , '/n') , 只能是 char s[];

cin.getline屬於ostream , 和getline類似,只是只能對char s[]類型進行讀取,除這點外,其他和getline都相同。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章