Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/27: Рейтинг темы: голосов - 27, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 7

Разделение строки на отдельные слова [С++]

24.05.2012, 22:34. Показов 5607. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо разделить строку на отдельные слова. Использовать strtok() нельзя.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2012, 22:34
Ответы с готовыми решениями:

Разделение строки типа String на отдельные слова с разделяющим символом
Подскажите пожалуйста, как строку с n-ым количеством слов разделённых символом точка запятой разделить и поместить предположим в массив

Разделение предложения на отдельные слова и сортировку их в алфавитном порядке
Я делаю лабораторную на разделение предложения на отдельные слова и сортировку их в алфавитном порядке. Вот код: program main; type...

Разделение строки на слова, и поиск слова по определенным критериям
Вводиться строка, разделенная пробелами. Требуется отыскать слово, в котором гласных A,E,I,O максимальное количество.

9
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
24.05.2012, 22:43
istringstream решит проблему:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <sstream>
#include <string>
 
 
int main() {
   std::string str = "This is a sample string";
   
   std::istringstream iss(str);
   std::string word;
   
   while (iss >> word) {
      std::cout << word << std::endl;
   }
}
http://liveworkspace.org/code/... 0b587a2f73
0
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 7
24.05.2012, 22:50  [ТС]
эм... а через указатели как-нибудь?
и без "istringstream"
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
24.05.2012, 23:21
Цитата Сообщение от dimon0909 Посмотреть сообщение
через указатели как-нибудь
Только указатели, только хардкор? Тогда могу предложить лишь говнокод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
 
 
#define MAX_WORD_LENGTH   128
 
 
int main() {
   char const* str = "This is a sample string";
   char word[MAX_WORD_LENGTH + 1];
       
   for (char const* first = str, * last; ; first = last) {
      for ( ; *first != '\0' && std::isspace(*first); ++first);
      if (*first == '\0') {
         break;
      }
      for (last = first; *++last != '\0' && !std::isspace(*last); );
      std::strncpy(word, first, last - first);
      word[last - first] = '\0';
      
      std::cout << word << std::endl;
   }
}
http://liveworkspace.org/code/... 5a1076a75e
0
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 7
25.05.2012, 00:59  [ТС]
хм) спасибо) нуу.. а как-нибудь через самые простые ф-ции string.h?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.05.2012, 01:08
Цитата Сообщение от dimon0909 Посмотреть сообщение
нуу.. а как-нибудь через самые простые ф-ции string.h?
Цитата Сообщение от gray_fox Посмотреть сообщение
std::strncpy
это и есть простая функция из cstring (string.h если вам будет угодно)
0
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 7
25.05.2012, 01:24  [ТС]
я имел ввиду такого типа ф-ции (http://cppworld.h16.ru/stdc/string_h.htm). Такие как "std::strncpy" ,увы, не проходились..
в смысле именно чтобы "std:: "
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
25.05.2012, 01:59
Это и есть те самые функции. Просто в С++ библиотеки С "обёрнуты". string.h в cstring, ctype.h в cctype, stdio.h в cstdio и т.д. + размещены в пространстве имён std, т.е. std::strncpy - это strncpy, std::isspace - isspace.

Добавлено через 5 минут
Этот же код на С:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
 
#define MAX_WORD_LENGTH   128
 
 
int main() {
   char const* str = "This is a sample string";
   char word[MAX_WORD_LENGTH + 1];
   char const* first;
   char const* last;
       
   for (first = str; ; first = last) {
      for ( ; *first != '\0' && isspace(*first); ++first);
      if (*first == '\0') {
         break;
      }
      for (last = first; *++last != '\0' && !isspace(*last); );
      strncpy(word, first, last - first);
      word[last - first] = '\0';
      
      printf("%s\n", word);
   }
   
   return EXIT_SUCCESS;
}
http://liveworkspace.org/code/... c4179d1351
1
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 7
25.05.2012, 02:15  [ТС]
Отлично) Огромное спасибо!
только один вопрос.. isspace() проверят является ли элемент разделителем.. так?
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
25.05.2012, 02:18
Цитата Сообщение от dimon0909 Посмотреть сообщение
isspace() проверят является ли элемент разделителем.. так
Ну да: табы там всякие, пробелы, в описании посмотрите, там все эти символы должны быть указаны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2012, 02:18
Помогаю со студенческими работами здесь

Разбиение строки на отдельные слова
Помогите с ошибкой, я просто с VB столкнулся впервые сегодня утром, а времени на подробное изучение нет, сегодня надо сдать работу. Вот...

Функция разбиения строки на отдельные слова
Подскажите, плиз, как написать функцию разбиения строки на отдельные слова. Параметр функции — исходная строка, результат работы —...

Выделить отдельные слова из введенной пользователем строки
Составить программу, которая выделяет отдельные слова из введенной пользователем строки. Словом считается последовательность букв,...

Разделение строки на слова
Подскажите пожалуйста, как разделить строку на отдельные слова. Заранее спасибо.

Разделение строки на слова
Есть строка типа &quot;mov ebx+edx&quot; нужно разделить так чтобы получить массив символов: mov ebx + edx Как это сделать?Юзала функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru