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

Как разбить строку на вектор из строк? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
ксения.
Сообщений: n/a
05.12.2010, 18:11     Как разбить строку на вектор из строк? #1
Здравствуйте.
Хочу написать программу, которая текст преобразует в вектор,каждый элемент которого-отдельное слово. Создаю два объекта string s(собственно,текст) и s2. Дальше следующий код:

C++
1
2
3
4
5
6
7
8
9
10
11
    string::iterator cur,next;
    string::iterator it;
    cur=s.begin();
    for(it=s.begin();it<s.end();it++)
    {
        next=find(cur,s.end(),' ');
        copy(cur,next,inserter(s2,s2.begin()));
        v.insert(v.end(),s2);
        cur=next;
        s2.clear();
    }
Записываю кусок из текста в отдельную строку,которую заношу в вектор, как отдельный элемент. Но в результате, 1й элемент вектора записывается, как надо, дальше-пустота. Очевидно это из-за clear(). Если его убрать-первое слово записывается во все элементы контейнера. Непонятен этот момент, как перезаписать s2?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2010, 18:11     Как разбить строку на вектор из строк?
Посмотрите здесь:

C++ Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера векторов-строк, для которых модуль их скалярного произведения S имеет максим
C++ Как разбить строку в МFC?
Как разбить строку C++
C++ Как разбить вектор на части(то есть вектора того же типа)
как разбить строку C++
Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор C++
Разбить строку на слова, добавить эти слова в массив строк C++
Разбить строку чисел в вектор C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
05.12.2010, 19:07     Как разбить строку на вектор из строк? #2
всё гораздо проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <iterator>
#include <sstream>
 
int main()
{    
   std::string line;
   std::getline(std::cin, line);
   std::istringstream iss(line);
   std::vector<std::string> v( (std::istream_iterator<std::string>(iss)), 
                    std::istream_iterator<std::string>());    
   //...
   return 0;
}
либо можете воспользоваться этой нехитрой функцией
ксения.
Сообщений: n/a
05.12.2010, 19:57     Как разбить строку на вектор из строк? #3
Спасибо, но я же учусь...мне важно понять,почему не получается таким способом,что здесь неправильно...

Написала так:
C++
1
2
3
4
5
6
7
8
        while(next!=s.end())
        {
            next=find(cur,s.end(),' ');
            copy(cur,next,inserter(s2,s2.end()));
            v.insert(v.end(),s2);
            cur=next;
            s2.clear();
        }
Теперь,когда включается программа-просто мигает курсор,весь текст,который я хочу вывести на экран после этих вычеслений,на экран не выводится...Не пойму, в чем дело...
Yandex
Объявления
05.12.2010, 19:57     Как разбить строку на вектор из строк?
Ответ Создать тему
Опции темы

Текущее время: 08:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru