Я новичок в c ++ и кодировании в целом, и у меня возникла небольшая проблема в одном из моих заданий. Я просто ищу ввод и надеюсь объяснение, почему мой код не работает.
Я пытаюсь получить ввод от пользователя и использую функцию cin.get()
для подсчета всех символов вэта строка. Я делаю это потому, что хочу определить буквы в каждом слове строки. Теперь у меня проблемы: я не могу заставить его правильно распечатать результат.
Мой вопрос: Почему я не могу получить результат, когда пытаюсь определить, является ли моя переменная chr
это символ '\ n'? chr
- это переменная, которая содержит значение текущего символа, читаемого функцией cin.get()
), является '\n'
. Я хочу иметь возможность обновлять параметры (word1, word2 .....) моей функции countWordsByLegth()
, когда текущее значение chr
равно '\n'
или другими словами конец строки.
Следующий код, например, не будет работать, и это единственный способ, которым я знаю, как обновить мой параметр для строки, не содержащей пробелов (строки из одного слова):
if (counter == 5 && chr == '\n')
{
++word5;
counter =0;
}
Вот мойкод для справки. Функция isWhitespace()
просто определяет, является ли символ одним из следующих '\n'
, '\r'
, '\t'
):
while (cin.get(chr) && chr != '\n')
{
counter++;
if (isWhitespace(chr))
{
--counter;
//test = true;
}
if (counter == 5 && chr == '\n')
{
++word5;
counter =0;
}
if (counter == 4 && chr =='\n')
{
++word4;
counter =0;
}
if (counter == 3 && chr =='\n')
{
++word3;
counter =0;
}
if (counter == 2 && chr == '\n')
{
++word2;
counter =0;
}
if (counter ==1 && chr == '\n')
{
++word1;
counter =0;
}
cout << counter << endl; // Test code {delete later}
}
cout << "This is the total of word5: " << word5 << endl;
}