C++:对循环进行故障排除

use*_*445 0 c++ loops operators

你好.我正在尝试执行一段代码的构建问题.我是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;
}
Run Code Online (Sandbox Code Playgroud)

问题是"if((cin >> input)=='a')"运算符'=='有问题

Ste*_*ove 7

您遇到的问题是表达式cin >> input不会"返回"键入的字符,它将cin作为istream&对象返回.

对您的直接解决方案是:

if( ( cin >> input ) && ( input == 'a' ) )
{
    break;
}
Run Code Online (Sandbox Code Playgroud)

检查的原因cin >> input是防御性的:如果由于任何原因,istream无法读取,它将变为无效.

简而言之,C++中的循环通常基于零,并且最好限制i变量的范围:

for( int i = 0; i != 100; ++i )
Run Code Online (Sandbox Code Playgroud)