Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
yul
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 3
#1

Вывести подстроку, расположенную между первым и последним пробелом исходной строки - C++

10.07.2014, 13:42. Просмотров 450. Ответов 6
Метки нет (Все метки)

Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и последним пробелом исходной строки.
Если строка содержит только один пробел, то вывести пустую строку.

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
#include<iostream>
#include<string>
using namespace std;
string func(string& str)
{
    string::iterator begin = str.begin(), 
                          end = str.end();
    while(*begin != ' ' && begin != end) 
        ++begin;
    while(*end != ' ' && begin != end)
       --end;
       
    string ret;
    ret.reserve(end - begin);
    while(++begin != end)
        ret += *begin;
    return ret;
}
int main()
{   string str;
    cout<<"Vvedite stroku: ";
    getline(cin, str);
    cout<<func(str);
    return 0;
}
как вывести пустую строку, если в строке только один пробел?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 13:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести подстроку, расположенную между первым и последним пробелом исходной строки (C++):

Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки - C++
помогите пожалуйста!!! Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки....

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

Вывести подстроку, расположенную между первым и вторым пробелом исходной строки - C++
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной...

Вывести подстроку, расположенную между первым и вторым пробелом исходной строки - C++
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и вторым пробелом исходной...

Вывести строку, расположенную между первым и последним пробелом исходной строки - C++
Дана строка, содержащая по крайней мере один символ пробела. Вывести строку, расположенную между первым и последним пробелом исходной...

Вывести сумму чисел расположенных между первым и последним нулем - C++
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных...

6
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.07.2014, 13:44 #2
C++
1
std::cout << "Пустая строка\n";
0
yul
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 3
10.07.2014, 14:00  [ТС] #3
мне это никак не помогло
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
10.07.2014, 14:03 #4
C++
1
while(begin++ != end)
надо постфиксный инкремент тут, а у вас префиксный
1
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.07.2014, 14:05 #5
Цитата Сообщение от yul Посмотреть сообщение
мне это никак не помогло
а че вы хотите увидеть на экране???
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
10.07.2014, 14:09 #6
тут краш происходит когда только один пробел в строке, тогда получается в етом цикле на 15 строчке begin равен end. а если вы его префиксно увеличите то зависнет в этом цикле
0
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.07.2014, 14:16 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
        std::string strs[] = { "uihnoiqcq890uy93 9 429490h uioh ipuah lfj", "uihnoiqcq89j", "uihnoiq lfj" };
        for (auto& str : strs) {
            auto first = str.find_first_of(' ');
            auto last = str.find_last_of(' ');
 
            if (first != -1) {
                while (++first < last) {
                    std::cout << str[first];
                }
            }
            std::cout << "!" << std::endl;
        }
0
10.07.2014, 14:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 14:16
Привет! Вот еще темы с ответами:

Найти сумму положительных элементов, расположенных между первым и последним отрицательными элементами строки - C++
Помогите найти сумму положительных элементов, расположенных между первым и последним отрицательными элементами этой же строки. #include...

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

Сумма между первым и последним отрицательными элементами - C++
Вычислить сумму находящихся между первым и последним отрицательными элементами

Не могу посчитать сумму между первым и последним отрицательным! - C++
а также нужно переобразовать масив таким образом что бы сначала рассполагались елементы модуль которых не перевышает 1 а потом все...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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