Определение количества букв в каждом слове строки в C ++ - PullRequest
0 голосов
/ 14 октября 2019

Я новичок в 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;

}

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете использовать std::string.length(), чтобы получить количество символов в строке. Функция length() возвращает количество символов в строке.

#include <iostream>
#include <string>

int main()
{
  std::string s;
  s = "test";
  std::cout << "The string has " << s.length() << " letters!";
}

http://www.cplusplus.com/reference/string/string/ здесь вы можете прочитать о различных функциях, которые можно использовать со строками.

...