cin<<方式輸入字符串時,遇到空格、制表符、換行符會輸入結束。剩余輸入內容將緩存在輸入隊列。
因此,如果輸入內容中有空格就要考慮其他方法了。
cin.getline()和cin.get(str)都讀取一行輸入,直到換行符。區別是getline()丟棄換行符而get(str)將其保存在輸入隊列。
//輸入帶空格的英文名,再輸入工作 cin.getline(name,nsize).getline(job,jsize); //get()如此做效果與上面相同 cin.get(name,size).get();
cin.get(job,size);
這種用法是不是和js中的原型鏈似曾相識呢~~
但如果混合輸入數字和字符串,無論使用哪種輸入,都必須注意輸入隊列中緩存的換行符,如:
1 int age; 2 char hobby[50]; 3 cin>>age; 4 cin.get(); //清除換行符 5 cin.getline(hobby,50);
再說一說cin.get(ch)與cin.get()的區別:
cin.get(ch)目的是將輸入字符賦值給參數ch,其返回值是istream對象;而cin.get()是將輸入作為返回值。
遇到文件結束符EOF時,cin.get(ch)返回istream對象執行bool轉換後值是false,cin.get()直接返回EOF。所以有下面兩種方法判斷非EOF:
if(cin.get(ch)) //... if((ch=cin.get())!=EOF) //...