我正在通过Bjarne Stroustrup'编程:使用C ++的原则和实践"并且我有一个演习,告诉我编写一个程序,该程序由一个while循环组成(每次循环)读取两个整数然后打印它们并且它应该在" |时退出。 "进入。我已经写好了这个程序(我确定有更简单的写作方式,但是我已经得到了#34;礼物和过度复杂的东西),但我可以& #39;找到一种退出循环的方法。这是代码:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> answers;
int answer;
int intCounter=0;
while(answers.size()<=2 )
{
if(answer=='|')
{
return 0;
}
std::cin>>answer;
answers.push_back(answer);
++intCounter;
if(intCounter==2)
{
for(int x : answers)
{
std::cout<<x<<'\n';
}
answers.clear();
intCounter=0;
}
}
return 0;
}
基本上如果我写一个if语句来检查答案是否等于&#39; |&#39;,编译器认为我的意思是它的int值(124或类似的东西)并在我关闭时终止循环写124,这显然不是我想要的。我试图通过互联网查看将int转换为char的方法,但我从那时起就无法理解任何东西。最简单的解决方案是最好的。
答案 0 :(得分:0)
cin >> answer
将失败。您可以使用该行为来结束循环。
// Break inside the loop.
while( true )
{
std::cin>>answer;
// If there was an error in reading, break out of the loop.
if ( !std::cin )
break;
answers.push_back(answer);
++intCounter;
if(intCounter==2)
{
for(int x : answers)
{
std::cout<<x<<'\n';
}
answers.clear();
intCounter=0;
}
}
答案 1 :(得分:0)
两个变化:
如果你的任务是打印数字,你可以使用字符串。
在输入之前,您正在检查|
的答案值。
所以
#include<iostream>
#include <vector>
#include<string>
using namespace std;
int main(){
std::vector<string> answers;
string answer;
int intCounter=0;
while(answers.size()<=2 ){
std::cin>>answer;
//after input
if(answer=="|"){
return 0;
}
answers.push_back(answer);
++intCounter;
if(intCounter==2){
for(int x=0;x< answers.size();x++){
std::cout<<answers[x]<<'\n';
}
answers.clear();
intCounter=0;
}
}
return 0;
}