您好。我正在尝试执行一段代码的构建问题。我是C ++的新手,我正试图解决它,所以这个问题可能非常简单。我真的很感激任何人都可以帮助我。这是代码;
#include <iostream>
using namespace std;
int i = 0;
char input = ' ';
int main()
{
for(i = 1; i <= 100; ++i)
{
if((cin >> input) == 'a')
{
break;
}
}
return 0;
}
问题在于“if((cin&gt;&gt; input)=='a')” 运算符'=='
有问题答案 0 :(得分:7)
您遇到的问题是表达式cin >> input
没有“返回”输入的字符,它会将cin
作为istream&
对象返回。
直接解决方法是:
if( ( cin >> input ) && ( input == 'a' ) )
{
break;
}
检查cin >> input
的原因是防御性的:如果由于任何原因无法读取istream,它将变为无效。
简单来说,C ++中的循环通常基于零,并且最好限制i
变量的范围:
for( int i = 0; i != 100; ++i )
答案 1 :(得分:3)
表达式(cin >> input)
返回对cin的引用,这永远不会等于'a'。
像这样改变循环:
for(i = 1; i <= 100; ++i)
{
cin >> input;
if( input == 'a')
{
break;
}
}
答案 2 :(得分:1)
尝试
for(i = 1; i <= 100; ++i)
{
cin >> input;
if(input == 'a')
{
break;
...
代替。当ares时,iostream(cin)将输入存储在输入中;或者结束;)
答案 3 :(得分:0)
运营商&gt;&gt;不返回读取的字符,而是返回istream本身的引用。
你必须这样做:
for(i = 1; i <= 100; ++i) {
cin >> input;
if (input == 'a') {
break;
}
}
您还可以保持条件if (cin >> input)
以检查您的istream是否仍处于“良好状态”,如果它已正确读取,但我无法看到读取char是如何使cin失败的。无论如何,在所有其他必须从输入流中读取的情况下,这是一种很好的做法。
同样使用for(int i = 0; i < 100; ++i)
代替for(i = 1; i <= 100; ++i)
通常更有用(例如,您必须使用i
作为数组的索引)。另请注意,您不应在for循环之外定义i
:在C ++中,尽可能将变量范围保持为本地范围,它将保护您免受许多副本和粘贴错误。
答案 4 :(得分:0)
提出另一种检索输入数据的方法:
std :: getline()允许您检索用户输入的内容,包括句子和字符串对象。所以这个解决方案往往更灵活。
string input;
getline(cin, input);
if(input == "a")
{
break;
}