我需要编写一个程序,它要求你输入两个整数,然后输出相同的两个整数,但如果你输入'|',它将结束程序。
这就是我所拥有的,对我来说它应该有效,但不幸的是它没有。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int var1 = 0;
int var2 = 0;
while(1)
{
cout << "Please enter two numbers.\n";
cin >> var1;
cin >> var2;
if(var1 == '|')
break;
else
{
if(var2 == '|')
break;
else
{
cout << var1 << ' ' << var2 << '\n';
}
}
}
}
我确信这是一个我想念的简单概念,但显然会非常感激任何帮助。
答案 0 :(得分:2)
当您读取整数时,像|
这样的用户输入只会导致(无声)错误,这会将cin
置于错误模式。
在清除错误模式之前,将忽略进一步的输入操作,因此您将获得无限循环。
而是使用std::getline
标题中的<string>
将用户输入作为字符串读取。检查输入行是否以数字或“|”开头。如果是数字,则使用例如转换为整数std::stoi
。
语言的无限循环内置语法是for(;;)
。它的实际优点是Visual C ++不会发出关于常量条件表达式的愚蠢警告。
答案 1 :(得分:0)
尝试使用声明var1和var2作为char类型 如果它需要int,那么试试
if(var2 == 124)
答案 2 :(得分:0)
如果要接受除数字编号以外的任何字符,则var1和var2不能是整数类型。所以你必须用char声明字符串。
我确定你需要两个数字来做一些计算功能,所以将var1和var2从string转换为整数类型。
参考: http://en.cppreference.com/w/cpp/string/basic_string/stol
您对&#34;如何结束某项计划&#34;
的问题的答案你可以使用
exit(1);
代码示例:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main()
{
string var1,var2;
int num1,num2;
cout << "Please enter two numbers.\n";
cin>>var1;
if(var1 != "|")
{
num1 = ::atoi(var1.c_str());
}
else
{
cout<<"Programs Terminated."<<endl;
exit(1);
}
cin>>var2;
if(var2 != "|")
{
num2 = ::atoi(var2.c_str());
}
else
{
cout<<"Programs Terminated."<<endl;
exit(1);
}
cout<<"\nSum of 2 number: "<<num1+num2<<endl;
}
答案 3 :(得分:0)
而不是从if(var1 == '|')
开始的所有代码,请执行以下操作:
if ( !cin )
break;
cout << var1 << ' ' << var2 << '\n';
当您使用<<
读取int
时,如果输入实际上不包含int,则会将cin
置于失败状态。测试!cin
检查cin
是否处于失败状态。
要阅读更多相关信息,请阅读任何C ++书籍或参考书。