【发布时间】:2014-02-12 08:39:46
【问题描述】:
我正在将一个文件 (input.txt) 输入到我的程序中 input.txt 包含以下文本:
Trojans, 0.80, 0.60
Bruins, 0.20, 0.30
Bears, 0.60, 0.50
Trees, 0.50, 0.40
Ducks, 0.40, 0.80
Beavers, 0.50, 0.10
Huskies, 0.80, 0.40
Cougars, 0.10, 0.90
但是终端输出的是
Trojans, 0.80, 0.60
Bruins, 0.20, 0.30
Bears, 0.60, 0.50
Trees, 0.50, 0.40
Ducks, 0.40, 0.80
Beavers, 0.50, 0.10
Huskies, 0.80, 0.40
Cougars, 0.10, 0.90�
我不确定奇怪的问号是从哪里来的。
我的代码目前是
知道为什么会这样吗?
【问题讨论】:
-
ifstream_obj.get() 一次获取一个字符,您将其存储在字符数组中。这个数组在 C++ 中看起来就像一个旧的 c 样式数组,因此应该以空值结尾。此外,您的输入缓冲区(团队)不够大;您正在运行超出数组的末尾,并调用未定义的行为。
-
哦,这很有意义,所以如果我只包含一个 if 语句,告诉程序在到达 eof 时中断?
-
这还不够。您正在创建一个 c 字符串,但不是以空值终止它。您在该字符串中读取的字符也比分配用于接收它们的数组的大小更多。
-
以后当我从这个数组中获取数据时,这是否会成为一个问题,即使我告诉程序一旦达到 eof 就停止读取值。