Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Nachinka
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
#1

Разбить строку на слова, добавить эти слова в массив строк - C++

01.05.2014, 15:16. Просмотров 1848. Ответов 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
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    setlocale(LC_ALL,"rus");
        char str[] = "Муха Варенье Сова"; 
        char strw[] = "Муха Варенье Сова"; 
 
        if(str == " " || str == ""){
            cout << "Пустой запрос!" << endl;
        }
 
        char *spcol;
        char *spw;
 
        int c = 0;
        spcol = strtok(str, ", ");
        while (spcol) {
            c = c + 1; 
            spcol = strtok(NULL, ", ");
        }
 
        char *listword[c];
        spw = strtok(strw,", ");
        while(spw){
             for(int i = 0 ; i < c; i++){
                listword[i] = spw;
             }
            spw = strtok(NULL,", ");
        }
 
        for(int a = 0; a < c; a++){
            cout << listword[a] << endl;
        }
  return 0;
}
Помогите, пожалуйста, решить задачку)

Заранее благодарю!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 15:16     Разбить строку на слова, добавить эти слова в массив строк
Посмотрите здесь:

Строка: Строку разбить на слова и слова запихнуть в массив char. - C++
Вобщем пока нужно: 1) строку разбить на слова и слова запихнуть в масив char. но у меня почему то вообще не то записывает в масив, хоча...

Строку разбить на слова и слова запихнуть в масив char - C++
Вобщем пока нужно: 1) строку разбить на слова и слова запихнуть в масив char. но у меня почему то вообще не то записывает в масив, хоча...

Разбить введенную строку на отдельные слова, выделив под каждое свой массив - C++
Тема: многомерные динамические массивы 1. Разбить введенную строку на отдельные слова, выделив под каждое свой массив.

Разбить введенную строку на слова и выделить под каждое слово отдельный массив - C++
Ребята помогите плиз! Задали задание, а сделать не могу( 1) Написать ф-ию, которая определяет является ли строка палиндромом 2)...

Вывести строку, содержащую эти же слова, но расположенные в обратном порядке. Записать полученную строку в другой файл - C++
Доброго времени суток! Крайне необходима помощь экспертов в С++! Кто может - не оставьте меня в беде))) Вот задания: ...

Разбить строку на слова - C++
Добрый день. Есть массив char (say), в него вводят строку (два-три слова) с пробелами и без пробела в конце. Цикл разбивает её на отдельные...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
01.05.2014, 15:20     Разбить строку на слова, добавить эти слова в массив строк #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Nachinka Посмотреть сообщение
Разбить строку на слова, добавить эти слова в массив строк, вывести содержимое массива строк.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <iostream>
#include<vector>
#include<sstream>
#include<string>
#include<iterator>
int main()
{
    std::string str = "Is a string";
    std::stringstream s(str);
    std::vector <std::string> svec;
    for(std::string word;s>>word;svec.push_back(word));
    std::copy(svec.begin(),svec.end(),std::ostream_iterator <std::string> (std::cout,"\n"));
    return 0;
}
Nachinka
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
01.05.2014, 16:17  [ТС]     Разбить строку на слова, добавить эти слова в массив строк #3
Спасибо cooller!
Только вывод странноват...
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 <string>
#include <vector>
#include <iterator>
#include <sstream>
 
using namespace std;
 
int main() {
    setlocale(LC_ALL,"rus");
    string str = "Moscow Never Sleep";
    stringstream s(str);
    vector <string> svec;
      for(string word; s >> word; svec.push_back(word)){
        copy(svec.begin(),svec.end(),ostream_iterator <string> (cout,"\n"));
      }
 
      vector<string>::iterator cur;
      for (cur = svec.begin(); cur<svec.end(); cur++){
       cout<<*cur<<endl;
      }
  return 0;
}
пришлось добавить дополнительный вектор.

Вывод
Bash
1
2
3
4
5
6
Moscow
Moscow
Never
Moscow
Never
Sleep
Добавлено через 8 минут
Или так:
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
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <sstream>
 
using namespace std;
 
int main() {
  setlocale(LC_ALL,"rus");
  string str = "Moscow Never Sleep";
  stringstream s(str);
  vector <string> svec;
    for(string word; s >> word; svec.push_back(word)){
      copy(svec.begin(),svec.end(), ostream_iterator <string> (cout,"\n"));
    }
 
  unsigned int vector_size = svec.size();
  cout << "Ваш вектор." << endl;
    for (int i = 0; i < vector_size; i++) {
      cout << svec[i] << endl;
    }
  return 0;
}
Добавлено через 13 минут
Так как вывод второй для меня удобнее...

Как вот тут не выводить в консоль?

C++
1
std::copy(svec.begin(),svec.end(),std::ostream_iterator <std::string> (std::cout,"\n"));

std::cout заменить на NULL что ли?
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
01.05.2014, 16:26     Разбить строку на слова, добавить эти слова в массив строк #4
Цитата Сообщение от Nachinka Посмотреть сообщение
Как вот тут не выводить в консоль?
Код C++
1
std::copy(svec.begin(),svec.end(),std::ostream_iterator <std::string> (std::cout,"\n"));
std::cout заменить на NULL что ли?
если не нужно выводить в консоль, то нужно удалить строку полностью
Цитата Сообщение от Nachinka Посмотреть сообщение
Только вывод странноват...
расшифруй

Добавлено через 1 минуту
Цитата Сообщение от Nachinka Посмотреть сообщение
for(string word; s >> word; svec.push_back(word)){
* * * * copy(svec.begin(),svec.end(),ostream_iterator <string> (cout,"\n"));
* * * }
вывод странноват, потому что ты убрала ; после инициализации цикла, и копи каждый раз выводил на экран, а потом ты еще и вектор выводила, по этому и странноватый вывод
Nachinka
11 / 11 / 0
Регистрация: 19.02.2014
Сообщений: 95
01.05.2014, 16:28  [ТС]     Разбить строку на слова, добавить эти слова в массив строк #5
Ну просто при выводе, писалось это:
Bash
1
2
3
Moscow
Moscow
Never
А по логике вещей должно было писаться вот это:
Bash
1
2
3
Moscow
Never
Sleep
Добавлено через 46 секунд
А понятненько!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2014, 17:44     Разбить строку на слова, добавить эти слова в массив строк
Еще ссылки по теме:

Разбить строку на слова - C++
Разбить строку на слова. Все слова записать в отдельную строку. Помогите пожалуйста не получается. #include &lt;iostream&gt; #include...

Разбить строку на слова - C++
Здравствуйте! Решаю задачу, надо разбить предложение на слова с помощью функции strtok. Делаю вот так но не уверен что это правильно....

Разбить строку на слова из словаря - C++
Условие У Васи на клавиатуре не работает клавиша пробел. Поэтому все тексты он теперь набирает слитно. Напишите программу, которая...

Разбить введенную строку на слова - C++
Да, я знаю, что тема не нова и много раз поднималась на этом форуме.=-O Но не могли бы вы максимально понятно и просто реализовать эту...

Как считать строку и разбить ее на слова? - C++
Задача на С. (стандарт) Необходимо считать строку и разбить ее на слова (слова разделены пробелами (не меннее одного)). Количество слов и...

Разбить строку на слова, удвоить пробелы - C++
Всем привет,такая проблема,не работает в программе 1 функция,2-3 работают вроде..Помогите Пожалуйста исправить код или как сделать легче...


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

Или воспользуйтесь поиском по форуму:
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
01.05.2014, 17:44     Разбить строку на слова, добавить эти слова в массив строк #6
Nachinka, просто использует мой код, не нужно ничего править, можете только добавить ввод строки с консоли
Yandex
Объявления
01.05.2014, 17:44     Разбить строку на слова, добавить эти слова в массив строк
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru