Функция C ++ не подсчитывает количество пробелов в текстовом файле - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь посчитать разные типы символов в текстовом файле "nums.txt". Я использовал какое-то время l oop с объектом ifstream для проверки каждого символа в отдельности. В настоящее время все мои типы символов (знаки препинания, цифры, прописные буквы и т. Д. c.) Правильно отображают свои соответствующие номера, за исключением символа пробела ''.

Это то, что у меня есть в l oop в настоящее время:

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

     // the rest of the char types

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

При каждом запуске программы на дисплее отображается 0 для количества пробелов, и я понятия не имею, почему. Спасибо.

1 Ответ

1 голос
/ 12 марта 2020

Если вы не хотите, чтобы ваш istream пропускал пробелы (пробелы, табуляции и новые строки считаются пробелами), вам нужно указать, чтобы он явно не пропускал пробелы.

Вы можете сделать это путем передачи потокового манипулятора std::noskipws в поток перед выполнением форматированного ввода:

std::cin >> std::noskipws;

Обязательно восстановите его нормальное поведение, когда вы закончите, иначе оператор >> не будет работать как и ожидалось.

std::cin >> std::skipws;

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

...