0

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

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

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

     // the rest of the char types

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

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

4

1 回答 1

1

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

您可以通过std::noskipws在执行格式化输入之前将流操纵器传递给流来做到这一点:

std::cin >> std::noskipws;

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

std::cin >> std::skipws;

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

于 2020-03-12T01:43:20.623 回答