编程原理和实践使用C++while-loop演练。找不到退出循环的方法
Programming Principles and Practice using C++ while-loop drill. Can't find a way to exit the loop
我正在阅读Bjarne Stroustrup的《编程:使用c++的原理和实践》,我有一个练习,告诉我写一个由while循环组成的程序,(每次循环)读取两个int型,然后打印它们,当输入"|"时它应该退出。我已经编写了程序(我确信有更简单的方法来编写它,但我有过度复杂化的"天赋"),但我找不到退出循环的方法。下面是代码:
#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; }
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 编程原理和实践使用C++while-loop演练。找不到退出循环的方法