【发布时间】:2020-11-10 03:39:20
【问题描述】:
我正在从文件读取到 C++ 中的二维数组。我使用了一个 do while 循环和eof()。我面临的问题是,当文件中的字符用完时,程序会继续读取空格。我意识到这是因为 getline 函数,所以我改用了 get 函数。程序编译并成功运行,但在到达要读取文件中字符的位置(即在我的控制台中)时,程序突然停止并返回此错误代码 -1073741795 (0xc00000ID)。我想知道为什么,我主要关心的是如何从文件中读取,并且在文件中的字符用尽后,程序停止从文件中读取(因此不会读取空格)。
这里是示例代码:
int k=0;
do{
name_input.getline(sample[k],num_char);
k++;
} while (!name_input.eof());
num=k-1;
PS:输入文件的格式是; 克拉克·史密斯先生 约翰·B·多伊 约书亚克莱门特约翰逊 每个在一行 在 .txt 文件(记事本)中,第三个名称之后是我的程序仍然读取的空白空间。
【问题讨论】:
-
while ( name_input.getline() ) { } 会更好
-
sample是什么?如果它是一个固定大小的数组,也许你应该使用一个 std::vector ?也许你应该验证k小于大小 -
我认为如果您需要比提供的更多帮助,您需要提供更好的minimal reproducible example 您当前的代码会遗漏很多细节。
-
@drescherjm
sample是包含从输入文件读取的名称列表的 2-Array 的名称。k迭代以提供索引。专栏没有必要,所以我没带。