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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
#1

STL String. Вывести слово и после него количество символов - C++

02.07.2013, 23:57. Просмотров 1853. Ответов 36
Метки нет (Все метки)

Здраствуйте! У меня есть например строка string, покажите пожалуйста на примере как можно выделять слова этой строки, например вывести слово и после него количество символов. И так же например вывести каждое 2-е или 3-е слово строки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос STL String. Вывести слово и после него количество символов (C++):

STL, istream_iterator, в вектор считывается неверное количество символов - C++
Имеется программа, в которой происходит посимвольное чтение из файла в вектор: #include <fstream> #include <iostream> #include...

Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++ - C++
Удалить конец строки символов. Ввести количество удаляемых символов , вывести результат на печать . Помогите плиз с задачкой. тема :...

Задать максимально разрешенное количество вводимых символов (std::string) - C++
Привет ребята! Такая тема: Вводимая строка не должен превышать, допустим, 10 символов (строка хранится в типе string). Делаю так ...

Вывести имя и количество букв в фамилии. Вывести самое длинное слово - C++
Помогите сделать задачку: Вывести имя и количество букв в фамилии.Вывести самое длинное слово.На C++

Вывести имя и количество букв в фамилии. Вывести самое длинное слово - C++
Вывести имя и количество букв в фамилии.Вывести самое длинное слово,помогите сделать эту программу

Найти слово, содержащее наибольшее количество символов - C++
Ввести с клавиатуры одномерный строковый массив и найти слово, содержащее наибольшее количество символов. DEV-C++

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
03.07.2013, 00:11 #2
а пробелы между словами есть?)
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
03.07.2013, 00:15  [ТС] #3
Цитата Сообщение от Ko Посмотреть сообщение
а пробелы между словами есть?)
конечно есть)
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
03.07.2013, 00:21 #4
так в цикле и написать) делов то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string line = "qwe qweq qwe";
string data_load = ""
for (int i = 0; i < line.size(); i++)
{
    if ( line[i] != ' ')
    {
        data_load+=line[i];
        continue;
    }
    if ( line[i] == ' ' || i == line.size()-1 )
    {
        cout <<"слово: "<<data_load<<", размер: "<<data_load.size()<<endl;
        data_load ="";
    }
}
вот и вся проблема)
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 00:26 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <sstream>
 ...
    string str = "a bb ccc dddd";
    stringstream s(str);
    string temp;
    int i = 0;
    while (!s.eof())
    {
        s >> temp;
        ++i;
        if (i == 2 || i == 3) cout << temp << ' ';
        cout << temp.size() << endl;
 
    }
...
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
03.07.2013, 00:38  [ТС] #6
Цитата Сообщение от Ko Посмотреть сообщение
так в цикле и написать) делов то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string line = "qwe qweq qwe";
string data_load = ""
for (int i = 0; i < line.size(); i++)
{
    if ( line[i] != ' ')
    {
        data_load+=line[i];
        continue;
    }
    if ( line[i] == ' ' || i == line.size()-1 )
    {
        cout <<"слово: "<<data_load<<", размер: "<<data_load.size()<<endl;
        data_load ="";
    }
}
вот и вся проблема)
почему не выводит последнего слова?
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
03.07.2013, 01:19 #7
эту строчку я поправил if ( line[i] == ' ' || i == line.size()-1 )

Добавлено через 2 минуты
потому что врядли вы будете ставить пробел после последнего слова)

Добавлено через 1 минуту
а лучше ещё так написать
if ( ( line[i] == ' ' && line.size() > 0 ) || ( i == line.size()-1 && line.size() > 0) )

Добавлено через 35 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    string line = "qwe qweq qwe";
    string data_load = "";
    for (int i = 0; i < line.size(); i++)
    {
        if (data_load.size() > 0)
            if ( line[i] == ' ' || i == line.size()-1 )
            {
                if ( line[i] != ' ' && i == line.size()-1) data_load+=line[i];
                cout <<"слово: "<<data_load<<", размер: "<<data_load.size()<<endl;
                data_load ="";
                continue;
            }
        data_load+=line[i];
    }
во правильно и мелче)
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 01:25 #8
Все-таки, с объектом класса string работаем, а не с массивом чаров, так что будет разумнее использовать методы класса и не работать напрямую как с массивом
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
03.07.2013, 01:26  [ТС] #9
Цитата Сообщение от Croessmah Посмотреть сообщение
Все-таки, с объектом класса string работаем, а не с массивом чаров, так что будет разумнее использовать методы класса и не работать напрямую как с массивом
вот и я про это)
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
03.07.2013, 02:34 #10
Цитата Сообщение от Croessmah Посмотреть сообщение
Все-таки, с объектом класса string работаем, а не с массивом чаров, так что будет разумнее использовать методы класса и не работать напрямую как с массивом
покажите пожалуйста Ваш пример
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
03.07.2013, 03:30 #11
Ko, посмотрите по форуму, их тут навалом в т.ч. и моих, ну или ждите утра
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
03.07.2013, 13:17  [ТС] #12
Цитата Сообщение от Croessmah Посмотреть сообщение
Ko, посмотрите по форуму, их тут навалом в т.ч. и моих, ну или ждите утра
уже утро)
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
03.07.2013, 13:35 #13
чем пример alsav22, плох?
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
03.07.2013, 23:08 #14
Цитата Сообщение от Кудаив Посмотреть сообщение
чем пример alsav22, плох?
а Вы его пробывали использовать?

Добавлено через 1 минуту
Croessmah если Вы обладаете знаниями как сделать более компактный и быстрый код по данному примеру пожалуйста подскажите нам.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2013, 23:12 #15
Цитата Сообщение от Ko Посмотреть сообщение
а Вы его пробывали использовать?
Какие-то проблемы с использованием?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 23:12
Привет! Вот еще темы с ответами:

нужно удалить и вывести все символы после *(его не нужно выводить). я смог наоборот вывести всё до него! помоите - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;conio.h&quot; using namespace std; int _tmain(int argc, _TCHAR*...

Вывести слово с максимальным кол-вом символов - C++
Добрый день. Я хожу к репетитору по программированию (с++). Пока просто пытаюсь понять азы. На дом было дано задание, которое заключается в...

Дан массив символов, вывести на экран второе слово - C++
Дан массив символов, вывести на экран второе слово. Помогите запилить, пожалуйста, ну или хотя бы подтолкните на мысль, рассказав как это...

Вывести на экран строки длиной больше 5 и меньше 20 символов из контейнера multiset<string> - C++
Здравствуйте, у меня такой вопрос, например существует контейнер multiset&lt;string&gt;, как можно вывести на экран строки длиной больше 5 и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.07.2013, 23:12
Ответ Создать тему
Опции темы

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