由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一个C++的问题
相关主题
关于文件读取的C++ 问题?C++如何输入的一个小问题
C++ Q13: Input读取数据求教
how to skip the last empty lines in ifstream?一个很诡异的ifstream问题,求助~~
Re: 一道count frequency of all words的面试题 (转载)如何让这个cur变量正确指向新地址
C++读文本文件怎么判断换行?how to use cin as default ifstream?
how to read a sentence into a vector of string?请教用c++读取large file怎么可以快一些?
C++ 在 windows 上 结果正确, 在 linux 上结果总是不一样,怎天,如何能让程序转得快点?有包子。
C++ string to int ProblemC++ read matrix from txt file
相关话题的讨论汇总
话题: ifstream话题: str话题: file话题: failbit话题: badbit
进入Programming版参与讨论
1 (共1页)
e********r
发帖数: 2352
1
为了使用try ... throw ... catch的方式处理异常,写了以下一段程序,就是读取一
个文件
ifstream file;
file.exceptions(ifstream::failbit | ifstream::badbit);
try{
file.open("./file");
string str;
while(getline(file, str))
{
cout< }
}
catch(ifstream::failure e)
{
cout<<"Return information: "< }
file.close();
请问为什么总是会执行catch的语句,如果用最土的方式
ifstream file("./file");
string str;
while(getline(file, str))
{
cout< }
file.close();
这个倒是绝对不会有问题,请问第一段程序里为什么getline()会throw failbit或者
badbit, 正常读到最后一行的时候应该是设置eof()为1, fail, bad和good都还是0吧.
t****t
发帖数: 6806
2
checked standard. if EOF happens in the middle of a line, you see eofbit
alone. if EOF happens immediately after a newline, a sentry object is
constructed at that time and traits::eof() is returned. and sentry object
set eofbit|failbit.
i think usually badbit alone should be the exception condition. failbit can
happen quite easily.

【在 e********r 的大作中提到】
: 为了使用try ... throw ... catch的方式处理异常,写了以下一段程序,就是读取一
: 个文件
: ifstream file;
: file.exceptions(ifstream::failbit | ifstream::badbit);
: try{
: file.open("./file");
: string str;
: while(getline(file, str))
: {
: cout<
e********r
发帖数: 2352
3
谢谢你的回复,只用一个badbit就好了,看了一下文件,不论新行中有没有内容,都会
出现返回failbit的现象.

can

【在 t****t 的大作中提到】
: checked standard. if EOF happens in the middle of a line, you see eofbit
: alone. if EOF happens immediately after a newline, a sentry object is
: constructed at that time and traits::eof() is returned. and sentry object
: set eofbit|failbit.
: i think usually badbit alone should be the exception condition. failbit can
: happen quite easily.

t****t
发帖数: 6806
4
我说的是EOF appear in the middle of line, 即最后一行无回车. 如果用vim打开的
话会提示incomplete last line.

【在 e********r 的大作中提到】
: 谢谢你的回复,只用一个badbit就好了,看了一下文件,不论新行中有没有内容,都会
: 出现返回failbit的现象.
:
: can

e********r
发帖数: 2352
5
明白你说意思了,谢谢指点哈.

【在 t****t 的大作中提到】
: 我说的是EOF appear in the middle of line, 即最后一行无回车. 如果用vim打开的
: 话会提示incomplete last line.

1 (共1页)
进入Programming版参与讨论
相关主题
C++ read matrix from txt fileC++读文本文件怎么判断换行?
C++ string类输入数据的问题how to read a sentence into a vector of string?
问个C/C++题目C++ 在 windows 上 结果正确, 在 linux 上结果总是不一样,怎
New C++ programmer, need to ask a I/O file read questionC++ string to int Problem
关于文件读取的C++ 问题?C++如何输入的一个小问题
C++ Q13: Input读取数据求教
how to skip the last empty lines in ifstream?一个很诡异的ifstream问题,求助~~
Re: 一道count frequency of all words的面试题 (转载)如何让这个cur变量正确指向新地址
相关话题的讨论汇总
话题: ifstream话题: str话题: file话题: failbit话题: badbit