【问题标题】:Changing from "getline" to "get" in c++ results in error在 C++ 中从“getline”更改为“get”会导致错误
【发布时间】: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 文件(记事本)中,第三个名称之后是我的程序仍然读取的空白空间。

【问题讨论】:

标签: c++ arrays file input


【解决方案1】:

使用eof() 几乎总是错误的(参见上面 cmets 中的链接)。循环是这样写的

int k = 0;
while (name_input.getline(sample[k],num_char)) {
    k++;
}

【讨论】:

  • 请@john,当我尝试你的方法时。当程序控制到达读取名称的位置时,我的程序突然停止。 Process terminated with status -1073741795 (2 minute(s), 55 second(s))
  • @Samuelson 没有人可以帮助您解决这个问题,因为导致崩溃的错误不在显示的代码中,或者在显示的有限代码中并不明显。
  • @Samuelson 不幸的是,如果没有完整的程序,通常无法修复错误。程序在一个地方崩溃,但错误实际上是在之前执行的某些代码中。
  • 谢谢大家,我能够找出问题所在。当我的文件中的名称列表完成时,我按了几次返回键。由于 getline 读取空格,它也读取这些。再次感谢
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2020-08-13
  • 2013-10-13
相关资源
最近更新 更多