(C++) 为什么我不能依赖提取运算符充当迭代器?

(C++) Why can't I rely on an extration operator to act as an iterator?

#include <iostream>
#include <fstream>


int main()
{
    std::ifstream file("input.txt");
    char currentChar;
    int charCount = 0;

    while (file >> currentChar)
    {
        charCount++;
        if (currentChar == 'a')
        {
            std::cout << charCount;
        }
    }

在上面,打印的 charCount 非常大。如果我将 charcount 移动到 if 语句中并将输入转换为字符 'a' 的重复,它会正确计数(或者会正确计算 a 的数量)。 “file >> currentChar”是什么导致 charCount 数字增加如此之高?如果是这样,它在做什么?为什么?

它不是“非常大”。您只是在每次遇到字母 a 时输出当前计数,并且由于您不包含任何空格或换行符,因此每个数字将连接在一起并看起来像一个巨大的数字。

试试这个:

std::cout << charCount << std::endl;

并考虑在循环之后只做一次。除非出于某种原因你想显示所有中间计数。