【发布时间】:2016-01-18 02:49:38
【问题描述】:
我正在阅读 Bjarne Stroustrup 的“编程:使用 C++ 的原理和实践”,并且我有一个练习,告诉我编写一个由 while 循环组成的程序,该循环(每次围绕循环)读入两个整数,然后打印它们,当输入“|”时它应该退出。我已经编写了程序(我确信有一种更简单的方法来编写它,但我有把事情复杂化的“礼物”) ,但我找不到退出循环的方法。代码如下:
#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 的方法,但我从那里什么都不懂。最简单的解决方案是最好的。
【问题讨论】:
-
将输入作为
std::string,如果不是|,则转换为int -
您在代码中有未定义的行为,因为您在初始化之前使用了
answer。未初始化的局部变量具有 indeterminate 值,并且在初始化之外使用它们会导致所述未定义行为。 -
天哪,请正确格式化您的代码! :P
-
(1) 当你写
'|'时,它与"|"不同。第一个是单个字符,可以解释为字母或整数。第二个是字符串,您可以将其与另一个字符串进行比较。 (2) 另外,如果你想退出循环而不是程序,你可以使用break。使用return会退出 while 循环和它所在的函数,在本例中为main,这会导致整个程序完成。
标签: c++ while-loop exit