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

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

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

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

08.04.2011, 02:34. Просмотров 985. Ответов 8
Метки нет (Все метки)

помогите пожалуйста!!!

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

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
08.04.2011, 04:53 #2
Получаешь указатели на первое и второе вхождение символа ' ' в исходной строке с помощью функции strchr, затем печатаешь все символы между этими указателями.
0
Monkey_2
34 / 34 / 4
Регистрация: 11.02.2009
Сообщений: 84
08.04.2011, 05:32 #3
Цитата Сообщение от Salawat Посмотреть сообщение
расположенную между первым и последним пробелом
Цитата Сообщение от Nameless One Посмотреть сообщение
первое и второе вхождение символа ' '
если вести строку из 4х слов, несработает
1
CEBEP
106 / 106 / 9
Регистрация: 21.03.2010
Сообщений: 440
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;
}
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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);
}
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;      
}
У меня не находит пробелы)...?
1
AlvinMax
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 16
07.01.2013, 14:36 #7
cin >> s; -- ввод до первого пробела , для ввода с пробелами надо getline(cin , s);
0
jahapups
1 / 1 / 0
Регистрация: 06.01.2013
Сообщений: 6
07.01.2013, 14:41 #8
а как вводить несколько строк(с помощью getline())?
0
AlvinMax
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 16
07.01.2013, 14:41 #9
поочереди)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2013, 14:41
Привет! Вот еще темы с ответами:

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

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

Получить разницу между первым элементом последовательности и числом, стоящим перед первым отрицательным - C++
Даны действительные числа а1, а2, .... Известно, что а1&gt; 0 и что среди а2, а3, ... есть хотя бы одно отрицательное число. Пусть a1, ..., an...

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


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

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

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