Есть текстовый файл, в котором записано несколько строк. Слова разделены пробелами.Необходимо посчитать только слова одной строки (пользователь сам вводит номер строки). Хотел сделать проверку, чтобы счетчик считал за слово если в строке идет порядок - символ-пробел-символ. Подскажите, что не так?
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();
Можно использовать разделить строку по пробелам и таким образом посчитать число слов:
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();
}
Тут так же рассматриваем случай, когда стоят два пробела подряд. Тогда слово не будет добавлено. Аргументом функции будет считанная строка из файла. Если первый символ элемента буква, то будем считать этот элемент словом.
Постараемся это сделать проще, быстрее и без излишней памяти
string s;
int count{};
while (f >> s && char(cin.peek()) != '\n')
++count;
cout <<((count) ? ++count : count) ;
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости