Найти индекс символа в строке в C++
В этом посте мы обсудим, как найти индекс символа в строке на C++.
1. Использование string::find
The string::find функция-член возвращает индекс первого вхождения указанного символа в строку или string::npos если персонаж не найден. В следующем примере показан вызов этой функции:
std :: string s = «C++20» ;
int index = s . find ( c ) ;
if ( index != std :: string :: npos ) <
std :: cout << "Character found at index " << index << std :: endl ;
std :: cout << "Character not found" << std :: endl ;
результат:
Character found at index 1
Вот эквивалентная версия с использованием std::find стандартный алгоритм, который принимает диапазон для поиска указанного элемента и возвращает итератор к первому элементу в нем.
std :: string s = «C++20» ;
auto it = std :: find ( s . begin ( ) , s . end ( ) , ‘+’ ) ;
if ( it != s . end ( ) ) <
int index = std :: distance ( s . begin ( ) , it ) ;
std :: cout << "Character found at index " << index << std :: endl ;
std :: cout << "Character not found" << std :: endl ;
результат:
Character found at index 1
2. Использование std::string_view
C++17 позволяет формировать строковое представление символьного литерала, используя std::literals::string_view_literals::operator""sv, заявлено в шапке . Получив строковое представление, мы можем использовать find() функция, чтобы получить позицию первого символа данной последовательности символов, или std::string::npos если он не найден. Например,
С++ Найти символ в строке
Задача:напишите программу,подсчитывающую количество определённой буквы в строке.строка и буква вводится пользователем.
сам мучаюсь третий день не могу понять как сделать нормально.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Функция принимает блоки данных (символ1, символ 2, строка), в каждой строке заменять символ 1 на символ 2
функция принимает блоки данный(символ1, символ 2 , строка), в каждом строке заменять символ 1 на.
Найти символ в строке
ребят помогите не понимаю что не так, пользователем вводится строка и символ нужно определить.
Найти символ в строке
Переменная <?$primer=test@test.ru?> Как найти и вывести символ @ ? Так не получается: .
Найти символ в строке
Как найти наиболее часто встречающийся символ в строке? Строка дана изначально. Желательно на.
Нахождение позиции символа в строке
Есть строка, в ней нужно найти символ ‘=’ и записать его позицию в переменную. Какие существуют решения?
Отслеживать
4,169 1 1 золотой знак 27 27 серебряных знаков 41 41 бронзовый знак
задан 8 июл 2015 в 6:56
95 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
Если вы таким образом собираетесь парсить что-нибудь, возможно, вы идёте неправильным путём.
8 июл 2015 в 9:18
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Для того, чтобы найти элемент в строке используется метод std::string:find , он вернет позицию первого вхождения. Если символ или подстрока не входят в исходную строку, вернет std::string::npos :
std::string equation = "1 + 2 = 4"; std::cout
Отслеживать
ответ дан 8 июл 2015 в 7:02
4,169 1 1 золотой знак 27 27 серебряных знаков 41 41 бронзовый знак
Вы не сообщили, в объекте какого типа у вас хранится строка.
Ниже показана демонстрационная программа, которая осуществляет поиск символа в символьном массиве s1 и в объекте с именем s2 класса std::string .
#include #include #include int main() < char s1[] = "2 * 2 = 4"; std::string s2( s1 ); char c = '='; char *p = std::strchr( s1, c ); if ( p != nullptr ) < std::cout std::string::size_type n = s2.find( c ); if ( n != std::string::npos ) < std::cout >
Вывод программы на консоль выглядит следующим образом:
Character '=' found at position 6 The rest of the string is "= 4" Character '=' found at position 6 The rest of the string is "= 4"
Как найти определенный символ в строке файла и выполнить над этой строкой действие (sh)?
Всех приветствую. Дано - файл, в котором имеются строки вида:
Mik_01-01-1990.rvk:0 Mik_02-01-1990.rvk:1 Mik_03-01-1990.rvk:1 Mik_04-01-1990.rvk:2
Необходимо перебором определить строки, заканчивающиеся на ":0", собрать их в один список и записать в файл.
Пробовал
while IFS= read -r line
но не понял, как правильно реализовать.
Может есть другие варианты?
- Вопрос задан более года назад
- 438 просмотров