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) //...