C++ 在输入字母之前,我们如何进行数字输入? cout>number; 而(!(cin.fail()){ 数字。推回(数字); cin>>数量; } 对于(int i=0;iinsertKey(number.at(i)); } 整数搜索; cout>搜索;
我想从用户输入中提取数字,直到用户输入一个字母C++ 在输入字母之前,我们如何进行数字输入? cout>number; 而(!(cin.fail()){ 数字。推回(数字); cin>>数量; } 对于(int i=0;iinsertKey(number.at(i)); } 整数搜索; cout>搜索;,c++,input,C++,Input,我想从用户输入中提取数字,直到用户输入一个字母 此后,我想获取另一个用户输入。我的输出很好。所以当我输入一个字母时,它就停止了。但它不要求第二次输入。如何修复此问题?当cin失败时,您需要修复这些问题 另外,您需要清除stdin缓冲区,该缓冲区将包含上一个cin中未解析的任何字符 cout << "Enter the numbers to be stored (end with a letter): "; cin >> number; while(!
此后,我想获取另一个用户输入。我的输出很好。所以当我输入一个字母时,它就停止了。但它不要求第二次输入。如何修复此问题?当
cin
失败时,您需要修复这些问题
另外,您需要清除stdin
缓冲区,该缓冲区将包含上一个cin
中未解析的任何字符
cout << "Enter the numbers to be stored (end with a letter): ";
cin >> number;
while(!(cin.fail())){
numbers.push_back(number);
cin >> number;
}
for(int i = 0; i < numbers.size(); i++){
node->insertKey(numbers.at(i));
}
int search;
cout << "Which number do you want to look up? ";
cin >> search;
/。。。
std::cin.clear()//旗帜清晰
cin.ignore(std::numeric_limits::max(),'\n')//清除缓冲区
//...
整数搜索;
cout>搜索;
//...
当cin
失败时,您需要重新启动
另外,您需要清除stdin
缓冲区,该缓冲区将包含上一个cin
中未解析的任何字符
cout << "Enter the numbers to be stored (end with a letter): ";
cin >> number;
while(!(cin.fail())){
numbers.push_back(number);
cin >> number;
}
for(int i = 0; i < numbers.size(); i++){
node->insertKey(numbers.at(i));
}
int search;
cout << "Which number do you want to look up? ";
cin >> search;
/。。。
std::cin.clear()//旗帜清晰
cin.ignore(std::numeric_limits::max(),'\n')//清除缓冲区
//...
整数搜索;
cout>搜索;
//...
最好先这样做:
//...
std::cin.clear(); //clear flags
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //clear buffer
//...
int search;
cout << "Which number do you want to look up? ";
cin >> search;
//...
如果在任何有效数字之前键入字符,则上面会留下一个空的向量
,而原始代码会将一个无意义的数字推送到向量
然后,如果他们键入了一个字母,则cin
流将处于错误状态,并且仍然有该字符输入,您将希望消除该字符输入:
while (cin >> number)
numbers.push_back(number);
//清除流错误
cin.clear();
//实际上,去掉上面有字符的线条。。。
cin.ignore(std::numeric_limits::max(),'\n');
然后,您可以继续执行for循环并流式搜索
最好先这样做:
//...
std::cin.clear(); //clear flags
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //clear buffer
//...
int search;
cout << "Which number do you want to look up? ";
cin >> search;
//...
如果在任何有效数字之前键入字符,则上面会留下一个空的向量
,而原始代码会将一个无意义的数字推送到向量
然后,如果他们键入了一个字母,则cin
流将处于错误状态,并且仍然有该字符输入,您将希望消除该字符输入:
while (cin >> number)
numbers.push_back(number);
//清除流错误
cin.clear();
//实际上,去掉上面有字符的线条。。。
cin.ignore(std::numeric_limits::max(),'\n');
然后,您可以继续执行for循环,并流到搜索我认为这会有所帮助
// clear stream errors
cin.clear();
// actually get rid of the line with the character on it...
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout>number;
而(cin>>编号){
如果(((字符)编号>='a'&&(字符)编号='a'&&(字符)编号>编号;
}
对于(int i=0;iinsertKey(number.at(i));
}
整数搜索;
cout>搜索;
我认为这会有所帮助
// clear stream errors
cin.clear();
// actually get rid of the line with the character on it...
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout>number;
而(cin>>编号){
如果(((字符)编号>='a'&&(字符)编号='a'&&(字符)编号>编号;
}
对于(int i=0;iinsertKey(number.at(i));
}
整数搜索;
cout>搜索;
解决此问题的最简单方法是重写所有内容,以使用std::getline
读取每一行输入,然后进行相应的分析。解决此问题的最简单方法是重写所有内容,以使用std::getline
读取每一行输入,然后进行相应的分析。清除/忽略需要在尝试删除之前进行eam至search
@TonyDelroy,是的,我的坏,复制/粘贴不正确。感谢提醒。在尝试流至search
@TonyDelroy,是的,我的坏,复制/粘贴不正确之前,需要清除/忽略。谢谢提醒。