C++ cin >>不再开始
C++ cin >> not starting again
好的,我正在为一本C++编程书做一个练习,它要求我制作一个程序,在这些名称旁边输入名称和分数,它们都保存在向量中。然后,在我输入完这些之后,它会提示我输入一个名称,然后它会找到该名称的相应分数。e.x.我输入"John",如果我把John的分数设为.,它会返回5
我遇到的问题是,在用户输入完姓名和分数后,我的程序提示用户输入姓名(以查找相应的分数),代码跳过cin
命令继续前进,使我的程序无法工作。我会发布完整的程序,然后我需要帮助的部分:
#include "std_lib_facilities.h"
int main()
{
vector<string>names;
vector<int>scores;
string name = "";
int score;
while(cin >> name && cin >> score)
{
for(int i = 0; i < names.size(); ++i) // checks all previous words
{
if(name == names[i]) // if the name is used twice, exit
{
cout << "Error. Terminating...n";
exit(4);
}
else;
}
names.push_back(name);
scores.push_back(score);
}
cout << "Enter a name, which I will find the score for. n";
string locateName;
while(cin >> locateName) // i think the program won't accept the locateName
{
for(int i = 0; i < names.size(); ++i)
{
if(locateName == names[i])
{
cout << names[i] << "'s score is " << scores[i] << 'n';
}
else { cout << "Name not found. n"; }
}
}
return 0;
}
以下是不起作用的部分:
cout << "Enter a name, which I will find the score for. n";
string locateName;
while(cin >> locateName)
{
for(int i = 0; i < names.size(); ++i)
{
if(locateName == names[i])
{
cout << names[i] << "'s score is " << scores[i] << 'n';
}
else { cout << "Name not found. n"; }
}
}
具体地,while(cin >> locateName)
。以下是一些附加信息:每当我输入姓名(John 5 Bob 6 Pete 9)时,我都会按CTRL+Z,然后按enter以停止cin
。然后程序就结束了。这(ctrlZ)是导致while(cin >> locateName)
不接受新值的原因吗?感谢您的帮助。
CTRL+Z被解释为文件结束标记。一旦cin
看到该标记,它就会进入错误状态(cin.eof()
和cin.fail()
将是true
,这意味着(bool)cin
将是false
,这就是第一个循环停止的原因)。当处于错误状态时,cin
将不再接受任何输入。
要使cin
恢复到良好状态,可以调用cin.clear()
。一旦它恢复到良好状态,它将再次接受输入。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- EASTL矢量<向量<int>>连续的
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我提出什么条件才能再加5%的折扣
- 我需要分发哪些版本的可再分发文件
- 如何从头开始创建 avi 文件?
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 自一周开始以来的秒数?
- 等待整个 omp 块完成,然后再调用第二个函数
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- GStreamer在开始任何播放之前进行搜索
- 使 std::fstream 写入文件末尾,但从头开始读取
- QWidget::p aintEngine:不应再在 QTreeWidget 派生类中调用
- 如何以毫秒为单位获取开始时间和 now() 之间的毫秒差异(以 C++为单位?
- 哪个C++规范开始支持 std::vector
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 如何在调试中通过传递引用开始
- 如何使用 picojson.h 在 c++ 中从头开始创建 json 对象
- 从特定键开始遍历地图