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

Разбиение строки на слова - C++

Восстановить пароль Регистрация
 
coder2
1 / 1 / 0
Регистрация: 01.03.2014
Сообщений: 312
25.04.2014, 16:44     Разбиение строки на слова #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string str, s1, s2;
    int i;
    
    cout<<"Enter please string!"<<endl;
    getline(cin,str);
    
    int len = str.length();
    
    cout<<len;
    
    
}
Видите в коде, а как сделать теперь, чтобы можно было разделить на слова (чтобы потом смог найти макс. длину слова и заменить его на вводимое!)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
25.04.2014, 17:17     Разбиение строки на слова #2
С помощью класса sstream
C++
1
2
3
4
5
6
7
8
9
10
#include <sstream>
// остальное также
    std::stringstream ss(str);
    string tmp;
    while (!ss.eof())
    {
        ss >> tmp;
        cout << tmp << endl;
        // получаем слова в столбик :-)
    }
coder2
1 / 1 / 0
Регистрация: 01.03.2014
Сообщений: 312
25.04.2014, 17:21  [ТС]     Разбиение строки на слова #3
Voroshek, Спасибо, отлично!
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
25.04.2014, 17:38     Разбиение строки на слова #4
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
42
43
44
45
46
47
48
49
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool space(char c)
{
    return isspace(c);
}
bool not_space(char c)
{
    return !isspace(c);
}
 
vector<string> split(const std::string& str)
{
    typedef std::string::const_iterator iter;
    vector<string> ret;
    iter i = str.begin();
 
    while(i != str.end())
    {
        i = find_if(i, str.end(), not_space);
        iter j = find_if(i, str.end(), space);
        if(i != str.end())
        ret.push_back(string(i, j));
 
        i = j;
    }
    return ret;
}
 
int main()
{
string str;
 
 
    cout<<"Enter please string!"<<endl;
    getline(cin,str);
    vector<string> vec;
    vec = split(str);
 
    cout << "dlina kazdoj stroki:" << endl;
    for(vector<string>::size_type i = 0; i != vec.size(); i++)
    cout << vec[i].length()<< endl;
 
return 0;
 
}
Yandex
Объявления
25.04.2014, 17:38     Разбиение строки на слова
Ответ Создать тему
Опции темы

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