gpt4 book ai didi

C++,程序在允许输入之前结束

转载 作者:太空狗 更新时间:2023-10-29 21:01:31 24 4
gpt4 key购买 nike

为了练习 C++,我正在尝试制作一个简单的程序,允许用户输入一个名称,然后输入一个分数,然后允许用户输入一个名称并获得输入该名称的分数。该程序工作正常,直到我输入一个转义字符 (ctrl + z) 一旦我输入完名字,输入转义字符后程序将输出行“输入学生姓名以查找分数”但不允许用户输入名称,而不是读出“按任意键退出”。我完全不知道如何解决这个问题,非常感谢任何帮助。

#include "stdafx.h"
#include <std_lib_facilities.h>

int main()
{
vector <string>names;
vector <int>scores;
string n = " "; // name
int s = 0; // score
string student = " ";
cout << "Enter the name followed by the score. (Ex. John 89)" << endl;
while(cin >> n >> s)
{
for(size_t i = 0; i < names.size(); ++i)
{
if(n == names[i])
{
cout << "Error: Duplicate name, Overwriting" << endl;
names.erase(names.begin() + i);
scores.erase(scores.begin() + i);
}
}
names.push_back(n);
scores.push_back(s);
}
cout << "Name: Score:" << endl;
for(size_t j = 0; j < names.size(); ++j)
{
cout << names[j];
cout <<" " << scores[j] << endl;
}
cout << "Enter name of student to look up their score" << endl;
cin >> student;
for(size_t g = 0; g < names.size(); ++g)
{
if(student == names[g])
{
cout << "Score: " << scores[g] << endl;
}
}
keep_window_open();
return 0;
}

最佳答案

按下 CTRL+Z 组合键后,cin 流会出现 EOF 状态,您需要将 cin 输入流恢复到正常状态 '良好的状态才能再次使用它。在打印 vector 内容的 for 循环之后添加以下代码。

cin.clear();

您还可以使用 rdstate() 函数检查标准输入流的状态。 0 以外的任何内容都表示标准流处于错误状态。

关于C++,程序在允许输入之前结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18066623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com