C++ 函数似乎不计算文本文件中的空格数

C++ Function does not seem to count the number of spaces in a text file

我正在尝试计算文本文件中不同类型的字符 "nums.txt" 我使用带有 ifstream 对象的 while 循环来单独检查每个字符。 目前,我的所有字符类型(标点符号、数字、大写字母等)都正确显示了它们对应的编号,但空白 space 字符 ' ' 除外。

这是我目前在循环中的内容:

while (inFile >> inChar){
    if (isupper(inChar))
       upperCount++;
    else if (islower(inChar))
       lowerCount++;

     // the rest of the char types

     else if (isspace(inChar))
        spaceCount++;
}

每当我 运行 程序时,显示屏显示 space 的数量为 0,我不知道为什么。 谢谢

如果您不希望 istream 跳过空格(空格、制表符和换行符都被视为空格),那么您需要明确告诉它不要跳过空格。

您可以通过在执行格式化输入之前将流操纵器 std::noskipws 传递给流来执行此操作:

std::cin >> std::noskipws;

请务必在完成后将其重置为正常行为,否则 >> 运算符将无法按预期工作。

std::cin >> std::skipws;

https://en.cppreference.com/w/cpp/io/manip/skipws