Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчёт слов и символов в итераторе, Подсчёт слов и символов в итераторе 
:(
    Опции темы
Abbath1349
Дата 5.1.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



подскажите как подсчитать количество знаков и символов в итераторах типа    std::vector<std::string>::iterator it; ?
PM MAIL   Вверх
KaraKum
Дата 5.1.2011, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Вот так?:
Код

std::vector<std::string> something;
int symbolsCount = 0;
for(std::vector<std::string>::iterator it = something.begin(); it != something.end(); it++)
{
     symbolsCount += (*it).length;
}
printf("something (really - what is it?) has %d symbols.\n", symbolsCount);

PM MAIL WWW   Вверх
Abbath1349
Дата 5.1.2011, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Ну я не совсем это имел ввиду надо подсчитать количество знаков без пробела и количество слов.
PM MAIL   Вверх
KaraKum
Дата 5.1.2011, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Код

std::vector<std::string> something;
int nonspaceSymbolsCount = 0;
int wordsCount = 0;
for(std::vector<std::string>::iterator it = something.begin(); it != something.end(); it++)
{
     //началось ли уже новое слово:
     bool isWord = false;
     //сколько вообще всяких символов в этой строке:
     const int symbolsCount = (*it).length;
     for(int i = 0; i < symbolsCount; i++)
     {
          //если НЕ пробел:
          if((*it)[i] != ' ')
          {
               nonspaceSymbolsCount++;
               //если прежде были только пробелы или это первый непробельный символ в этой строке:
               if(!isWord)
               {
                    isWord = true;
                    wordsCount++;
               }
               //в противном случае текущий символ лишь часть уже подсчитанного (учтённого) слова...
          }
          //предыдущее слово однозначно закончилось (неважно сколько пробелов после него):
          else
          {
               isWord = false;
          }
     }
}
printf("non-space symbols count: %d; words count: %d.\n", nonspaceSymbolsCount, wordsCount);


Добавлено @ 19:30
Думаю будет работать.

Это сообщение отредактировал(а) KaraKum - 5.1.2011, 19:31
PM MAIL WWW   Вверх
Abbath1349
Дата 5.1.2011, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Да действительно работает спасибо)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.