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

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

Войти
Регистрация
Восстановить пароль
 
 
neketsh
13 / 13 / 6
Регистрация: 23.08.2015
Сообщений: 131
Завершенные тесты: 1
#1

Найти первое вхождение символа в строке - C++

12.10.2016, 02:41. Просмотров 601. Ответов 17
Метки нет (Все метки)

Задана числовая строка с разделительным знаком (&) где то посередине. Мне надо получить числа в строке до этого знака, путём нахождения его первого входа.

Т.к. команда strchr показывает этот символ и те что после него, я подумал вычитать строки, но не нашёл никакой толковой информации об этом. Как можно реализовать вывод символов до искомого знака?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2016, 02:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти первое вхождение символа в строке (C++):

Функция удаляющая первое и последнее вхождение в строке заданного символа - C++
Функция удаляет первое и последнее вхождение в строке заданного символа.

Определить первое вхождение символа "d" в строке и вывести слово, в котором оказался этот символ. - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить первое вхождение символа “d” в строке и вывести слово, в котором...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке - C++
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с...

Первое вхождение символа в строку. С++ - C++
Для данного рядка оставить только первые вхождения каждого символа в ряд, и вывести результаты на экран. Заранее спасибо за помощь ))

Заменить в строке s1 первое вхождение s2 на строку s3 - C++
Начал тренироваться в использовании базовых функций работы со строками, и тут же пришло непонимание. Нужно заменить в строке s1 подстроку...

Удвоить каждое вхождение символа в строке - C++
Дана строка s и c символ . Удвойте каждое вхождение символа c в строке s подскажите пожалуйста как решить. Добавлено через 10 минут ...

17
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 04:06 #2
Цитата Сообщение от neketsh Посмотреть сообщение
Как можно реализовать вывод символов до искомого знака?
По-разному можно. Какие средства можно использовать? STL? Вариант на Си:
C++
1
2
3
4
    char str[] = "12345&6789";
    char* p = strtok(str, "&");
    if (p)
        printf("%s\n", str);
Добавлено через 4 минуты
Без строковых функций:
C++
1
2
3
4
    char str[] = "12345&6789";
    for (size_t i = 0; i < strlen(str) && str[i] != '&'; ++i)
        std::cout << str[i];
    std::cout << std::endl;
0
Croessmah
12.10.2016, 10:00
  #3

Не по теме:

Цитата Сообщение от nd2 Посмотреть сообщение
i < strlen(str)
Срочно в музей!

0
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 10:05 #4
Croessmah, что не так?
0
Croessmah
12.10.2016, 10:08
  #5

Не по теме:

Цитата Сообщение от nd2 Посмотреть сообщение
Croessmah, что не так?
strlen в цикле ж

0
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 10:12 #6
И что?
0
Croessmah
12.10.2016, 10:18
  #7

Не по теме:

Цитата Сообщение от nd2 Посмотреть сообщение
И что?
В музей надо.

0
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 10:20 #8
Поясни. То, что при каждой итерации вызывается? Или что не так?
0
Croessmah
12.10.2016, 10:21
  #9

Не по теме:

Цитата Сообщение от nd2 Посмотреть сообщение
То, что при каждой итерации вызывается?
Именно это я и имел ввиду.

0
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 11:08 #10
Цитата Сообщение от Croessmah Посмотреть сообщение
Именно это я и имел ввиду
На тебе тогда за это, из "Базовый курс" Липпмана.
0
Миниатюры
Найти первое вхождение символа в строке  
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
12.10.2016, 11:10 #11
Цитата Сообщение от nd2 Посмотреть сообщение
На тебе за это, из "Базовый курс" Липпмана.
На тебе: s.size() != strlen(str)
Это из простой человеческой логики.
Если s - std::string, то там вообще size за O(1).
0
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 11:11 #12
А разница? Тебе же не понравилось, что на каждой итерации вызывается?
Цитата Сообщение от Croessmah Посмотреть сообщение
Сообщение от nd2
То, что при каждой итерации вызывается?

Именно это я и имел ввиду.
И здесь на каждой итерации вызывается.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
12.10.2016, 11:13 #13
Цитата Сообщение от nd2 Посмотреть сообщение
Тебе же не понравилось, что на каждой итерации вызывается.
strlen каждый раз проходит по строке в поисках '\0' для определения размера.
Цитата Сообщение от nd2 Посмотреть сообщение
И здесь на каждой итерации вызывается.
size - сразу возвращает размер.

Вопросы по разнице еще имеются?
1
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
12.10.2016, 11:31 #14
Цитата Сообщение от Croessmah Посмотреть сообщение
Вопросы по разнице еще имеются?
Нет.

Добавлено через 8 минут
Мог бы я тебе,конечно, ещё пример из Прата привести, но смысла нет: всё равно
Цитата Сообщение от Croessmah Посмотреть сообщение
strlen каждый раз проходит по строке в поисках '\0' для определения размера.
С этим не поспоришь...
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
12.10.2016, 11:34 #15
Цитата Сообщение от nd2 Посмотреть сообщение
С этим не поспоришь...
Поспорить можно только теоретически.
Возможно, компилятор сможет сам
хешировать значение размера и не дергать каждый раз strlen,
но надеяться на это как-то не правильно.
0
12.10.2016, 11:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2016, 11:34
Привет! Вот еще темы с ответами:

Написать функцию, которая возвращает указатель на первое вхождение подстроки string2 в строке string1 - C++
char* strstr(char* string1, char* string2) Возвращает указатель на первое вхождение подстроки string2 в строке string1. В случае неудачи...

Найти первое вхождение символов в строку - C++
В массиве строк , введенных пользователем , найти первые вхождения символов ' s ' и 'S' . Использовать функции strchr () tolower ( ) . ...

Найти первое вхождение слова в текст - C++
Здравствуйте, помогите пожалуйста написать 2 программы, связанные со строками: 1)Даны две строки, которые назовём текст и слово, а...

Найти в тексте первое вхождение заданного слова (С++) - C++
Добрый день! Искал на форуме свою задачу оченьдолго так и не нашел. Есть похожие. Извиняюсь сразу если была такая уже. Нужен код программы...


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

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

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