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

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

Восстановить пароль Регистрация
 
Salawat
 Аватар для Salawat
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 28
08.04.2011, 02:34     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #1
помогите пожалуйста!!!

Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки. Если исходная строка содержит менее двух пробелов, то вывести пустую строку.(Например: "первая строка матрицы" -> " строка")
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2011, 02:34     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки
Посмотрите здесь:

C++ Произведение элементов между первым и последним нулевым элементом.
C++ [C++] Дана строка. Получить подстроку расположенную...
C++ Сумма между первым и последним отрицательными элементами
Не могу посчитать сумму между первым и последним отрицательным! C++
C++ Вывести строку, расположенную между первым и последним пробелом исходной строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
08.04.2011, 04:53     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #2
Получаешь указатели на первое и второе вхождение символа ' ' в исходной строке с помощью функции strchr, затем печатаешь все символы между этими указателями.
Monkey_2
 Аватар для Monkey_2
34 / 34 / 4
Регистрация: 11.02.2009
Сообщений: 84
08.04.2011, 05:32     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #3
Цитата Сообщение от Salawat Посмотреть сообщение
расположенную между первым и последним пробелом
Цитата Сообщение от Nameless One Посмотреть сообщение
первое и второе вхождение символа ' '
если вести строку из 4х слов, несработает
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
08.04.2011, 07:37     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #4
ну можно получить указатель на начало и наконец строки и проитерировать их на встречу друг другу пока не встретится пробел... разница - искомая строка. её можно или выписать или вырезать, это уж как удобнее...

Добавлено через 1 час 53 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
std::string func(std::string& str)
{
    std::string::iterator begin = str.begin(), 
                          end = str.end();
    while(*begin != ' ' && begin != end) 
        ++begin;
    while(*end != ' ' && begin != end)
       --end;
       
    std::string ret;
    ret.reserve(end - begin);
    while(++begin != end)
        ret += *begin;
    return ret;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
08.04.2011, 08:16     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #5
Цитата Сообщение от Monkey_2 Посмотреть сообщение
если вести строку из 4х слов, несработает
и вправду, невнимательно прочитал.
Тогда так: получаем указатель на первый пробел с помощью strchr, на последный пробел - с помощью strrchr

Как-то так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char* argv[])
{
    char* pf;
    char* pl;
 
    if(argc != 2)
    fprintf(stderr, "Usage: %s LINE\n", *argv);
 
    pf = strchr(argv[1], ' ');
    pl = strrchr(argv[1], ' ');
 
    if(pf != NULL && pf != pl)
        fwrite(pf + 1, sizeof(char), pl - pf - 1, stdout);
    putchar('\n');
    
    exit(0);
}
jahapups
1 / 1 / 0
Регистрация: 06.01.2013
Сообщений: 6
07.01.2013, 14:25     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<conio.h>
#include<cmath>
#include<string>
 
using namespace std;
int main()
{
    string s,str;
    int a,r,i;
    cin>>s;
    a=s.find_first_of(" ");
    i=s.find_last_of(" ");
    if(a!=i)
    {
       str=s.substr(a,(i-a));     
            }
    cout<<str;    
    getch();
    return 0;      
}
У меня не находит пробелы)...?
AlvinMax
 Аватар для AlvinMax
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 16
07.01.2013, 14:36     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #7
cin >> s; -- ввод до первого пробела , для ввода с пробелами надо getline(cin , s);
jahapups
1 / 1 / 0
Регистрация: 06.01.2013
Сообщений: 6
07.01.2013, 14:41     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #8
а как вводить несколько строк(с помощью getline())?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2013, 14:41     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
AlvinMax
 Аватар для AlvinMax
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 16
07.01.2013, 14:41     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки #9
поочереди)
Yandex
Объявления
07.01.2013, 14:41     Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки
Ответ Создать тему
Опции темы

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