(C++)为什么我不能依赖一个抽取操作符来充当迭代器?

(C++)为什么我不能依赖一个抽取操作符来充当迭代器?,c++,string,integer,extract,fstream,C++,String,Integer,Extract,Fstream,在上面,打印的字符数非常大。如果我将charcount移动到If语句中,并将输入转换为字符“a”的重复,它将正确计数或将正确计数a的数量。文件>>currentChar是什么导致charCount数增加如此之高?如果是,它在做什么?为什么?它不是很大。您只需在每次遇到字母a时输出当前计数,因为您不包含任何空格或换行符,因此每个数字都将合并在一起,看起来像一个巨大的数字 试试这个: #include <iostream> #include <fstream> int m

在上面,打印的字符数非常大。如果我将charcount移动到If语句中,并将输入转换为字符“a”的重复,它将正确计数或将正确计数a的数量。文件>>currentChar是什么导致charCount数增加如此之高?如果是,它在做什么?为什么?它不是很大。您只需在每次遇到字母a时输出当前计数,因为您不包含任何空格或换行符,因此每个数字都将合并在一起,看起来像一个巨大的数字

试试这个:

#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;
        }
    }

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

实际上您是对的-在我在stackoverflow中重写的代码中,我将charCount初始化为零。在我的实际代码中,它没有初始化。我增加了一个未初始化的变量,这就是为什么我得到的值不超过100万,即使输入文件只有几百个字符长,而且里面只有一个“a”。我希望打印出它在文件中的位置。我很感激你的澄清,这个数字不应该那么高!我怀疑也可能是这样,但当代码写在一个问题中时,我必须给出怀疑的好处。提问时不要重新输入程序,这一点非常重要。你必须复制/粘贴。您可以通过显示实际输出和指示文件中有多少个字符来进一步帮助您的问题。这将有助于识别问题,这将使问题的代码明显与现实不符。
std::cout << charCount << std::endl;