字符读取篇
一:“>>” 与 get()的区别
(1)>>操作符会忽略前面的空白符和换行符,但不会越过后面的换行符和空白符。
(2)get()方法不会略过任何符号。
二,利用peek()判断读取完毕
该调用形式为cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。
其功能是从输入流中读取一个字符 但该字符并未从输入流中删除 若把输入流比作一个 栈类 那么这里的peek函数就相当于栈的成员函数front 而如果cin.get()则相当于栈的成员函数pop。
比如
使用该方法读取文件
ifstream fin("文件名",ios::in);
while(!fin.eof())
{
}
最后一行空行也会进入循环,导致读取错误。
因此可以利用peek()方法来避免这个问题:
ifstream fin("文件名",ios::in);
while(!fin.eof()&&fin.peek()!=EOF)
{
}