Посчитать кол-во слов в строке из файла

204
09 июля 2018, 21:50

Есть текстовый файл, в котором записано несколько строк. Слова разделены пробелами.Необходимо посчитать только слова одной строки (пользователь сам вводит номер строки). Хотел сделать проверку, чтобы счетчик считал за слово если в строке идет порядок - символ-пробел-символ. Подскажите, что не так?

string line1, line2;
int c = 0;
ifstream f("text.txt");
for (int b = 1; b < a; b++)     
{
    getline(f, line1);
}
getline(f, line2);
for (int b = 0; b <= line2.length(); b++)
{
    if (isalpha(line2[b]))
    {
        if (line2[b+1] == ' ')
        {
            if (isalpha(line2[b + 2]))
                c++;
        }
    }
}
f.close();
Answer 1

Можно использовать разделить строку по пробелам и таким образом посчитать число слов:

unsigned wordCount(const std::string &s) 
{
        std::vector<std::string> elems;
        std::stringstream ss(s);
        std::string item;
        while (std::getline(ss, item, ' ')) {
                if(!item.empty() && isalpha(item[0]))
                    elems.push_back(item);
        }
        return elems.size();
}

Тут так же рассматриваем случай, когда стоят два пробела подряд. Тогда слово не будет добавлено. Аргументом функции будет считанная строка из файла. Если первый символ элемента буква, то будем считать этот элемент словом.

Answer 2

Постараемся это сделать проще, быстрее и без излишней памяти

string s;  
int count{};
while (f >> s && char(cin.peek()) != '\n')
        ++count;  
cout <<((count) ? ++count : count) ;
READ ALSO
Считывание из файла С++

Считывание из файла С++

После считывания из файла, у меня считывается строка с символом перехода на новую строку, в итоге при попытке узнать длину строки выводит...

199
С какой точки считается margin-left?

С какой точки считается margin-left?

С какого угла? Или с середины?

168
Не могу изменить отображение элемента select?

Не могу изменить отображение элемента select?

Есть select элемент с начальным заголовком Gender нажимая на который можно выбрать male или female

197