C primer plus筆記整理 04

2021-07-14 14:41:43 字數 3757 閱讀 9090

常用的一些輸入方法:

1.cin

2.cin.get()

3.cin.getline()

4.getline()

5.getchar()

這是最常用的輸入,可以同時接收幾個多個引數,並且它會自動過濾掉空白字元(tab,空格,換行….)

這也會使得多出來的輸入留在輸入流中,它只能截斷到需要的對應個數的引數

int a,b;

cin>>a>>b;

cout

<<"a = "

<<"b = "

/*3 5 6 7

a = 3

b = 5

*/

如上的6,7留在了輸入流中,沒被讀取到

cin接收一串字串:和上面的規律一樣,遇見空白字元直接截斷,到這為止的字串

char a[20];

cin>>a;

cout

<<"a = "

/*hello world

a = hello

*/

用來接受單個字元

char ch;

ch = cin.get(); //或cin.get(ch)

cout

<<"ch = "

/*yes

ch = y //這裡可以看出來只接收單個字元

*/

接收指定長度的字元陣列

cin.get(字元陣列名,指定長度)這個函式遇到換行結束,空格和tab都算乙個有效字元

char ch[20];

cin.get(ch,20);

cout

<<"ch = "

/*helloworldhelloworld

ch = helloworldhelloworl //這裡最多接收20-1 == 19個字元,因為有乙個'\0'佔位符,才算乙個字串

*/

cin.get()這個直接使用可以用來某些情況從輸入流中提取乙個字元,任意字元包括空白,讀到eof返回結束標識

int c;

cout

<<"enter a sentence:"

cout.put(c);

//output

/*hello wolrd(ctrl+z結束符)

hello world //如果不加上ctrl+z就會一直等待輸入,因為沒讀到eof

*/

接收乙個字串,可以接收空格並輸出

這個函式其實和上面寫到的帶引數的cin.get()類似,這個函式的完整形式是:cin.getline(接受字串的名字,接受的數目,指定結束字元)

一般我們省略了第三個引數,系統預設是以』\n』為eof,我們來試著改一下:

char ch[20];

cin.getline(ch,20,'a');

cout

<<"ch = "

helloworldhelloworld

ch = helloworldhelloworl

*//*

hellosa

ch = hellos //第一次是超過陣列容量被截斷了,第二次是遇見結束符'a'被截斷

*/

這裡我們發現乙個問題:cin.get()也能指定三個引數,那麼這和cin.getline()不就一模一樣了麼?

答案是:它們兩唯一的區別是cin.get()會保留最後輸入的』\n』在快取區中,而cin.getline()會拋棄這個』\n』

舉個例子:

char name[15];

cin.get(name,15);

cout

<<"name = "

<"\n";

char addr[15];

cin.get(addr,15);

cout

<<"addr = "

<"\n";

//這裡是兩個cin.get(),也就是會把'\n'保留在快取區,那我們知道name讀完之後,cin.get()繼續讀快取區,這是看見乙個'\n',就直接結束了

/*hello world

name = hello wolrd

addr =

*///很明顯,addr什麼只讀取到了乙個結束符,沒讀到任何乙個有效字元

那麼,換成cin.getline()呢?

char name[15];

cin.getline(name,15);

cout

<<"name = "

<"\n";

char addr[15];

cin.get(addr,15);

cout

<<"addr = "

<"\n";

/*hello (enter)

name = hello

world (enter)

addr = world

*///這時候因為cin.getline()將輸入的enter丟棄了,所以addr能讀取到'\n'後的字元,並以enter結束讀取

接受乙個字串,可以接收空格並輸出,但是它是c風格字串中的函式,需包含#include

string str;

getline(cin,str);

cout

hello world

*/

這個函式和之前的cin.getline()用法也類似,也能指定結束符,但是不能指定長度。

原形如下:

istream& getline ( istream& is, string& str, char delim );

istream& getline ( istream& is, string& str );

這兩個函式是c中的字元輸入輸出函式,getchar()和cin.get()功能一樣,都是接收乙個單字元

函式原形:

#include

int c;

c = getchar();

putchar(c);

putchar('\n');

/*helloh*/

//只讀取和輸出單個字元,這兩個函式比較簡單

//putchar()接受整形,是因為ascii中的128個字元都能用整形表示,你可以用整數來代表,如65 對應 'a'

//同時,getchar()的返回值是int型,cout乙個getchar時候是輸出字元在ascii對應的數字,如c是'a'就輸出65

有什麼錯誤還請指出,謝謝

C primer plus筆記整理 03

引入這個標頭檔案可以檢視系統支援的字符集的情況,因為其中包含了一些資訊如 define int max 2147483647 等等,這個表示int型別的最大表示範圍是 2147483648 2147483647 的總共2 32個數。int wrens 123 這樣的初始化唯一需要注意的是與函式區分,...

C primer plus筆記整理 05

允許指定占用特定位數的結構成員 官方說法 類和結構可包含比整型型別占用更少儲存空間的成員,這些成員被指定為位域 語法 declarator constant expression 注意 1.其中declarator 是在程式中訪問的成員的名稱,它必須是整型型別 包括列舉型別 2.常數表示式指定結構中...

c primer plus學習筆記

1.變數名命名規則 重要的 1 有含義 2 只能用字母字元 數字和下劃線 3 第乙個字元不能是數字 4 區分大小寫 5 不能用c 關鍵字 2.整型 1 無符合型別不能表負值 2 char short 16 int short long 32,int 和longlong 64,long c 11 寬度...