常用的一些輸入方法:
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 寬度...