使用 C++ while 循环钻取的编程原理和实践。找不到退出循环的方法
Programming Principles and Practice using C++ while-loop drill. Can't find a way to exit the loop
我正在阅读 Bjarne Stroustrup 的“编程:使用 C++ 的原理和实践”,并且我有一个练习告诉我编写一个由 while 循环组成的程序(每次循环)读入两个整数然后打印它们,当输入“|”时它应该退出。我已经编写了程序(我确信有更简单的编写方法,但我有 "gift"过于复杂的事情),但我找不到退出循环的方法。这是代码:
#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 语句来检查答案是否等于“|”,编译器认为我指的是它的 int 值(124 或类似的东西)并在我写 124 时终止循环,并且那显然不是我想要的。我试图在互联网上寻找一种将 int 转换为 char 的方法,但我从那里一无所知。最简单的解决方案是最好的。
当要读取的下一个非空白字符不是数字时,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;
}
}
两个变化:
如果您的任务只是打印数字,您可以只使用字符串。
您正在检查 |
的答案值,甚至在输入之前。
所以
#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;
}
我正在阅读 Bjarne Stroustrup 的“编程:使用 C++ 的原理和实践”,并且我有一个练习告诉我编写一个由 while 循环组成的程序(每次循环)读入两个整数然后打印它们,当输入“|”时它应该退出。我已经编写了程序(我确信有更简单的编写方法,但我有 "gift"过于复杂的事情),但我找不到退出循环的方法。这是代码:
#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 语句来检查答案是否等于“|”,编译器认为我指的是它的 int 值(124 或类似的东西)并在我写 124 时终止循环,并且那显然不是我想要的。我试图在互联网上寻找一种将 int 转换为 char 的方法,但我从那里一无所知。最简单的解决方案是最好的。
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;
}
}
两个变化:
如果您的任务只是打印数字,您可以只使用字符串。
您正在检查
|
的答案值,甚至在输入之前。 所以#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; }