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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
#1

Как разбить строку - C++

04.10.2013, 19:11. Просмотров 1582. Ответов 7
Метки нет (Все метки)

Как прочитать такую строку за один раз?

Ukraine Kiev Donetsk Odessa
и как мне строку разбить на слова и добавить в вектор.

string s
cin>>s;
до пробела только(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 19:11     Как разбить строку
Посмотрите здесь:

Как разбить строку - C++
Здравствуйте! Как извлечь из вводимой строки только символы? К примеру, вводим " asd sss 12", а на выходе получаем asd, sss и 12?...

Как разбить строку на предложения - C++
Как разбить строку на предложения

Как разбить строку в МFC? - C++
Такая ситуация (в продолжении темы о базе(кто читал)) Имеется строка в txt файле с разделителями. Например: ...

Как разбить строку на символы? - C++
Кто подскажет начинающему Как разбить строку на символы, имеется ввиду разбить слова на буквы

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

Как разбить строку на вектор из строк? - C++
Здравствуйте. Хочу написать программу, которая текст преобразует в вектор,каждый элемент которого-отдельное слово. Создаю два объекта...

Как разбить строку по нескольким делиметрам - C++
есть строка char *a = "123497, 56783; 09872!, 65443; ;221345, 623789 "; разделители char keys = ", !;."; нужно выделить слова ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
04.10.2013, 19:21     Как разбить строку #2
http://www.cplusplus.com/reference/s...tring/getline/

Добавлено через 8 минут
для того, чтобы потом строку разбить на подстроки разделенные пробелами можно использовать потоки строк std::istringstream
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    string s;
    std::getline(cin,s);
    cout << s;
 
    std::stringstream ss;
    ss.str(s);
 
    string s2;
    vector<string> vs;
    while(ss>>s2) vs.push_back(s2);
    
    cout << endl;
 
    for(int i=0; i<vs.size(); i++)
        cout << vs[i] << endl;
я привык использовать std::stringstream так как им можно пользоваться как для ввода так и для вывода
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
04.10.2013, 19:33  [ТС]     Как разбить строку #3
спасибо, сейчас попробую сделать)
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
04.10.2013, 19:35     Как разбить строку #4
Цитата Сообщение от BabyGluk Посмотреть сообщение
спасибо, сейчас попробую сделать)
забыл,
потоки строк
C++
1
#include <sstream>
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
04.10.2013, 20:32  [ТС]     Как разбить строку #5
Посмотрите пожалуйста, что не так?
Должно быть так:
Ввод
2
ua kiev odessa
ru piter moskow
(у меня должен получится такой мап <kiev,ua><odessa,ua><piter,ru><moskow,ru>
3
piter
moskow
odessa

вывод
ru
ru
ua

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
38
39
40
41
// K.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<map>
 
using namespace std;
int main(int argc, char* argv[])
{
    string str,word;
    map<string,string> map;
    int main = 0;
    int i = 0;
    vector<string> vs;
    int n = 0;
    cin>>n;
    for(int k = 0; k<=n;k++){
    getline (cin,str);
    stringstream ss;
    ss.str(str);
    while(ss>>word) vs.push_back(word);
    int size = vs.size();
    for(i = 1;i<size;i++)
        map[vs[i]] = vs[main];
        main = size;
        i = main+1;
    }
    int c;
    cin>>c;
    for(int k = 0;k<c;k++){
        cin>>str;
        cout<<map[str]<<endl;
    }
  system("pause");
 
    return 0;
}
Добавлено через 35 минут
Исправил.
Может кому нужно будет.
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
38
39
40
41
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<map>
 
using namespace std;
int main(int argc, char* argv[])
{
    string str,word;
    map<string,string> map;
    int main = 0;
    int i = 0;
    vector<string> vs;
    int n = 0;
    cin>>n;
    for(int k = 0; k<=n;k++){
 
    getline (cin,str);
    stringstream ss;
    ss.str(str);
    while(ss>>word) vs.push_back(word);
    int size = vs.size();
    while(i<size){
        map[vs[i]] = vs[main];
        i++;
    }
    main = size;
    i = main+1;
        
    
    }
    int c;
    string s;
    cin>>c;
    for(int k = 0;k<c;k++){
        cin>>s;
        cout<<map[s]<<endl;
    }
    return 0;
}
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
04.10.2013, 21:03     Как разбить строку #6
Только я не понимаю, зачем вообще stringstream тут. >> до пробела считывает - так тут же как раз так и надо.
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
04.10.2013, 22:42  [ТС]     Как разбить строку #7
как правильно цикл задать?
потому что кол ввода не указываеться)
что то типа
C++
1
while(cin>>str)
но я думаю так не прокатит.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2013, 02:04     Как разбить строку
Еще ссылки по теме:

Подскажите пожалуйста как разбить строку на массив слов? - C++
Надо разбить строку на массив строк при помощи разделителя... Какой функцией для этого надо восьпользоваться?

Подскажите как разбить строку на массив слов разделителем - C++
нужно разбить строку на массив строк для дальнейшей обработки, подскажите пожалуйста кто знает, как это сделать?

Strtok как разбить строку пополам по первому пробелу? - C++
Есть вот такая строка: 28 -1.221636 -1.183837 32.839973 0.885457 -0.348518 -0.307412 0.357200 0.834200 Мне нужно заменить первое...

Как проще всего разбить строку на ряд строк по разделителю? - C++
Пусть например есть строка &quot;abc;dasfadfa;asfadsfv&quot;. Надо разбить ее соответственно на 3 строки по разделителю &quot;;&quot;. Как это проще всего...

Посмотрите код! (используя функцию strtok, разбить телефонный номер формата (555) 555-5555, введенный как строку, на лексемы) - C++
Посмотрите код все правильно ли??? Задание звучит так, используя функцию strtok, разбить телефонный номер формата (555) 555-5555, введенный...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.10.2013, 02:04     Как разбить строку #8
Цитата Сообщение от BabyGluk Посмотреть сообщение
но я думаю так не прокатит.
Прокатит.
Yandex
Объявления
05.10.2013, 02:04     Как разбить строку
Ответ Создать тему
Опции темы

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