作者fasthall (Xen)
看板C_and_CPP
标题[语法] C++档案的.eof()问题
时间Wed Apr 8 23:08:36 2009
请问以前用C读取未知数量的资料时候
只要用FILE == EOF判定就好
可是现在改用C++则使用FILE.eof()来判定
但是我遇到一个问题
下列code要读取未知数量的资料并且记录数量
for (amount = 0; !infile.eof(); ++amount) {
infile >> queue[amount].date1;
infile >> queue[amount].date2;
}
amount -= 2;
但是这amount结果却会因为档案最後一行的空白行改变
如果最後一行没有空白行的话amoun -= 1;才对
C语言的FILE == EOF则没有这个问题
请问要怎麽解决?
因为要读取的东西是int不是string
用getline还要切割很麻烦......
先谢过前辈
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.221.33
1F:推 chrisdar:int amount = 0 04/08 23:50
2F:→ chrisdar:while (infile >> queue[amount].date1 >> queue[++amoun 04/08 23:50
3F:→ chrisdar:amount -= 2; 04/08 23:50
4F:→ chrisdar:推坏了 重推 04/08 23:51
5F:→ chrisdar:1int amount = 0 04/08 23:52
6F:→ chrisdar:while (infile >> queue[amount].date1 >> 04/08 23:52
7F:→ chrisdar: queue[++amount].date2) {} 04/08 23:52
8F:→ chrisdar:amount -= 2; 04/08 23:52
9F:推 chrisdar:++amount 改 amount++ 04/08 23:55
10F:→ fasthall:可以了 感谢!! 话说我还是不太懂++在前面和後面的差别... 04/09 00:08
11F:推 gundan:单写在一行没有差异 a=b++; a=++b; 这种才有差 04/09 00:44
12F:→ fasthall:可以稍微请前辈解释一下吗? 04/09 01:09
13F:→ issuemylove:简单说 ++b是在此行就改变值 而b++是在下一行 04/09 04:21
14F:→ fasthall:所以第一次会先运算a等到运算完a才++? 04/09 09:47
15F:推 gundan:a=b++;是 a=b;b=b+1; 然後a=++b;是 b=b+1;a=b; 04/09 09:54
16F:→ fasthall:感谢解惑! 04/09 11:56