(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;
并考虑在循环之后只做一次。除非出于某种原因你想显示所有中间计数。
#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;
并考虑在循环之后只做一次。除非出于某种原因你想显示所有中间计数。