运行时错误的cin.get()

14 浏览
0 Comments

运行时错误的cin.get()

我得到的输出是:

你的名字是什么?demiurge conon

你的姓是什么?no

你应该得到什么等级的字母?a

你多大了?

Name: demiurge conon, no

Grade: a

Age: 22

你的名字是什么?

你的姓是什么?

你应该得到什么等级的字母?

你多大了?

Name: ,

Grade: ╠

Age: -858993460

按任意键继续. . .

但是如果我在另一个文件中运行cstyle_string(),我就不会出现任何错误,代码运行得很完美。

我想知道为什么会这样?

0
0 Comments

(Run time error of cin.get())这个问题的出现的原因是:

1. 多余的\n符号:在cpp_string函数中,最后一个cin语句是cin >> age,它会留下一个未被提取的\n符号。

2. cin的状态:在cstyle_string函数的第一句cin.get(fNm, 20).get()中,如果在\n之前没有提取的字符,那么\n符号将保留在输入流中,作为下一个要从流中提取的字符。

解决方法是在cstyle_string函数的第一条cout语句之前添加cin.ignore(numeric_limits::max(),'\n');,这样可以忽略掉多余的换行符号。这样修改之后,程序将正常运行。

0