當我們需要讀取乙個字元來判斷需要執行的操作時,使用者輸入的字元無效或輸入多個字元怎麼辦?
另外cin.get()讀取單個字元,在while判斷中,其後的字元』\n』依然會讀入進行判斷從而影響結果。後面需要跟乙個cin.get(),進行吸收。
例題:加入benevolent order of programmer後,在bop大會上,人們便可以通過加入者的真實姓名、頭銜或秘密bop姓名來了解他(她)。請編寫乙個程式,可以使用真實姓名、頭銜、秘密姓名或成員偏好來列出成員。編寫該程式時,請使用下面的結構:
// benevolent order of programmers name structure
struct bop
;
該程式建立乙個由上述結構組成的小型陣列,並將其初始化為適當的值。另外,該程式使用乙個迴圈,讓使用者在下面的選項中進行選擇:
a. display by name b. display by title
c. display by bopname d. display by preference
q. quit
preference指的是:使用者更偏向於別人知道自己的名字。
應有以下的運**況:
a. display by name b. display by title
c. display by bopname d. display by preference
q. quit
enter your choice: a
wimp macho
raki rhodes
celia laiter
hoppy hipman
pat hand
next choice: d
wimp macho
junior programmer
mips
analyst trainee
loopy
next choice: q
bye!
以下是**,新加入了輸入糾正機制:
#include
using
namespace std;
//宣告所用函式
void
showmenu()
;void
showfullname()
;void
showtitle()
;void
showbopname()
;void
showpreference()
;//構建結構體以及其型別變數member
const
int membernum =3;
const
int strsize =10;
struct bop
member[membernum]=,
,};int
main()
case
'b':
case
'c':
case
'd':
default
://糾錯機制
cout <<
"please check your input\n"
;break;}
} cout <<
"next decision: "
; cin.
get(decision)
; cin.
get();
} cout <<
"bye\n"
;system
("pause");
return0;
}void
showmenu()
void
showfullname()
}void
showtitle()
}void
showbopname()
}void
showpreference()
case1:
case2:}}}
執行結果:
需要學習的:
在cin.get(char) 後新增語句cin.get(), 吸收多餘的字元』\n』.
類似通過讀取字元來判斷執行任務的寫法格式(目前水平)。
while
(退出條件)
}}
輸入糾正機制.
面對行的輸入:
cin.getline(char*, size) 讀取換行符,但隨後替換乘』\0』
cin.get(char*, size)讀取size-1個字元,將』\n』放在輸入佇列裡,將第n個字元新增為』\0』
處理行輸入可能超過目標陣列的一種方法
#include
using
namespace std;
void
show
(char*,
int)
;int
main()
show
(arr,10)
; cin.
get(arr,10)
;}//當cin.get()讀取空行時cin為false
system
("pause");
return0;
}void
show
(char
*arr,
int n)
cout << endl;
}
買鞋時應注意的要點
1 合適的鞋子應該從購買的那一天起就合腳。不要妄想多穿兩天它就不磨腳了。在一次次痛苦的磨合過程中,你的腳會問題叢生,甚至會變得畸形難看,以至今後再也不能適應任何一雙好鞋。2 鞋跟與足底凹陷處的弧度必須合腳,踝骨與腳尖不應該碰觸到鞋子。前腳要有一定擺動的餘地 而後跟不能擺動。3 鞋的重量每增加1克,對...
C語言中的for迴圈應注意
for迴圈的初始化 調整 判斷都可以省略。但是for迴圈的判斷部分如果被省略也可能會出現一些問題。下面我舉乙個簡單的小例子來演示一下,希望大家在使用的時就可以避免這種問題。可以看到這次只列印了10個 syc 下面我簡要分析一下。第一次 進入for迴圈i 0,列印10個syc 第二次 進入for迴圈i...
C 讀取字串的位元組長度
在c 裡面我們可以通過字串的length屬性讀取字串的長度,但眾所周知,通過這個屬性讀出來的話不管中文還是英文或者數字,乙個字就是乙個長度,這並不是我們想要的結果。正確的方法應該是指定編碼格式,然後通過編碼的getbytes方法來讀取長度。於是寫了乙個控制台程式用於比較各種編碼讀取長度的不同,如下 ...