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

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

Восстановить пароль Регистрация
 
yul
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 3
10.07.2014, 13:42     Вывести подстроку, расположенную между первым и последним пробелом исходной строки #1
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и последним пробелом исходной строки.
Если строка содержит только один пробел, то вывести пустую строку.

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;
}
как вывести пустую строку, если в строке только один пробел?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 13:42     Вывести подстроку, расположенную между первым и последним пробелом исходной строки
Посмотрите здесь:

Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки C++
C++ Произведение элементов между первым и последним нулевым элементом.
C++ вычислите сумму элементов, которая расположена между теми элементами,которые сами расположены между первым и последним отрицательными элементами.
C++ Сумма между первым и последним отрицательными элементами
Не могу посчитать сумму между первым и последним отрицательным! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.07.2014, 13:44     Вывести подстроку, расположенную между первым и последним пробелом исходной строки #2
C++
1
std::cout << "Пустая строка\n";
yul
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 3
10.07.2014, 14:00  [ТС]     Вывести подстроку, расположенную между первым и последним пробелом исходной строки #3
мне это никак не помогло
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
10.07.2014, 14:03     Вывести подстроку, расположенную между первым и последним пробелом исходной строки #4
C++
1
while(begin++ != end)
надо постфиксный инкремент тут, а у вас префиксный
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
10.07.2014, 14:05     Вывести подстроку, расположенную между первым и последним пробелом исходной строки #5
Цитата Сообщение от yul Посмотреть сообщение
мне это никак не помогло
а че вы хотите увидеть на экране???
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
10.07.2014, 14:09     Вывести подстроку, расположенную между первым и последним пробелом исходной строки #6
тут краш происходит когда только один пробел в строке, тогда получается в етом цикле на 15 строчке begin равен end. а если вы его префиксно увеличите то зависнет в этом цикле
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 14:16     Вывести подстроку, расположенную между первым и последним пробелом исходной строки
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Kukurudza
104 / 85 / 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;
        }
Yandex
Объявления
10.07.2014, 14:16     Вывести подстроку, расположенную между первым и последним пробелом исходной строки
Ответ Создать тему
Опции темы

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