Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
#1

Как проверить в строке все вхождения символа?

26.11.2013, 00:25. Просмотров 501. Ответов 7
Метки нет (Все метки)

Как проверить в строке все вхождения символа и запомнить кусок строки между двумя его вхождениями?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 00:25
Ответы с готовыми решениями:

Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения символа “a” на 11
Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения...

Заменить в строке все множественные вхождения заданного символа одним
Функция заменяет в строке все множественные вхождения заданного символа одним...

Подчеркнуть в строке все вхождения заданного символа, если такие там есть
Дана строка и некий символ. Подчеркнуть в строке все вхождения заданного...

Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку
В заданной строке заменить каждый символ «*» числом, соответствующим номеру по...

Как в переменной строкового типа заменить все вхождения одного символа на другой?
Подскажите как в переменной строкового типа заменить все вхождения одного...

7
ssXXss
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
26.11.2013, 00:32 #2
Цитата Сообщение от kobrjatina Посмотреть сообщение
Как проверить в строке все вхождения символа и запомнить кусок строки между двумя его вхождениями?
пересчитать вхождения и записать на листочек, после выбрать строку между двумя вхождениями и методом многократного повторения (можно вслух а можно и про себя ) запомнить кусок строки.)
0
zvoronz
272 / 240 / 56
Регистрация: 29.05.2012
Сообщений: 889
26.11.2013, 00:34 #3
Между двумя какими уточните. Если между крайними то вот так
C++
1
str2 = str.substr(f = str.find_first_of('f'), str.find_last_of('f') - f);
0
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 00:35  [ТС] #4
по-моему я помощи прошу, а не насмешек

Добавлено через 1 минуту
Цитата Сообщение от zvoronz Посмотреть сообщение
Между двумя какими уточните. Если между крайними то вот так
C++
1
str2 = str.substr(f = str.find_first_of('f'), str.find_last_of('f') - f);
а как это сделать на классическом Си, что бы попроще?
0
ssXXss
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
26.11.2013, 00:45 #5
Цитата Сообщение от kobrjatina Посмотреть сообщение
по-моему я помощи прошу, а не насмешек
ну каков вопрос таков ответ
Цитата Сообщение от kobrjatina Посмотреть сообщение
а как это сделать на классическом Си, что бы попроще?
подсчет количества вхождения символа :
C++
1
2
3
4
5
6
7
8
9
char str[] = "qergergregrregergreg";
    char ch = 'e';
    int l = strlen(str);
    int count = 0;
    for(int i = 0;i < l;i++)
    {
        if(str[i] == ch)
            count++;
    }
1
zvoronz
272 / 240 / 56
Регистрация: 29.05.2012
Сообщений: 889
26.11.2013, 00:47 #6
На классическом как раз не проще будет.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int ffi = -1, fli = -1;
 
for(int i = 0; i < strlen(buf); ++i)
    if(buf[i] == 'f')
    {
        ffi = i;
        break;
    }
for(int i = strlen(buf)-1; i >= 0; --i)
    if(buf[i] == 'f')
    {
        fli = i;
        break;
    }
int p = 0;
for(int i = ffi+1; i < fli-1; ++i)
    buf2[p++] = buf[i];
buf2[p] = '0';
0
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 00:53  [ТС] #7
Цитата Сообщение от zvoronz Посмотреть сообщение
На классическом как раз не проще будет.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int ffi = -1, fli = -1;
 
for(int i = 0; i < strlen(buf); ++i)
    if(buf[i] == 'f')
    {
        ffi = i;
        break;
    }
for(int i = strlen(buf)-1; i >= 0; --i)
    if(buf[i] == 'f')
    {
        fli = i;
        break;
    }
int p = 0;
for(int i = ffi+1; i < fli-1; ++i)
    buf2[p++] = buf[i];
buf2[p] = '0';
а не получится как-то с использованием strchr и strrchr? вот есть кусок программы, который запоминает часть строки от первого вхождения символа "с" и до конца строки. Что дописать, что бы в конце выводило на экран часть строки от первого вхождения "с" до следующего "с"?
C++
1
2
3
4
char str [50];
    strcpy (str, "12cb3a4c5");
    char* pStr;
    pStr = strchr (str, 'c');
0
zvoronz
272 / 240 / 56
Регистрация: 29.05.2012
Сообщений: 889
26.11.2013, 01:05 #8
C
1
2
3
4
char str [50], str2[50]="";
strcpy (str, "12cb3a4c5");
char* pStr;
memcpy(str2, pStr = strchr (str, 'c') + 1, strrchr(str, 'c') - pStr);
1
26.11.2013, 01:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 01:05

Как с помощью цикла проверить все вхождения символов?
Как с помощью цикла проверить все вхождения символов и если какой-то из...

Поиск в заданной строке последнего вхождения заданного символа
Помогите написать функцию, которая ищет в заданной строке последнее вхождение...

Поиск в строке первого вхождения указанного символа - ошибки
Осуществить поиск в строке первого вхождения указанного символа. выдает...


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

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

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