C++文本输入的处理


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

本文永久更新链接地址

相关内容

    暂无相关文章