2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Поиск подстроки
Сообщение24.03.2009, 19:21 
Аватара пользователя


27/10/08
222
Здравствуйте!
1. Если ли в С++ функция поиска подстроки в строке?
2. (Не имеет отношения к п. 1). Имеется строка, содержащая $n$ чисел, разделенных пробелами. Какой самый простой способ (с точки зрения программирования) считать их в массив?

 Профиль  
                  
 
 
Сообщение24.03.2009, 19:35 


14/02/09
114
По поводу первого, вы ищите функцию, подобную функции pos в Паскале ?
2. Я думаю, что проще всего считывать, проверяя не пробел ли это число, которое должно оказаться в массиве. Хотя это уже усложнение, опять же с точки зрения программирования.
Скорее всего, проще считывать числа из строки, на каждом шаге увеличивать на единицу счетчик, помимо увеличения, например, FOR. Соответственно, нужно указать границу максимального значения счетчика, которым вы бежите по строке . :)

 Профиль  
                  
 
 
Сообщение24.03.2009, 20:00 
Аватара пользователя


27/10/08
222
DoGGy в сообщении #198228 писал(а):
По поводу первого, вы ищите функцию, подобную функции pos в Паскале ?

Мне нужна функция, которая бы возвращала первое вхождение подстроки в строку.

DoGGy в сообщении #198228 писал(а):
Я думаю, что проще всего считывать, проверяя не пробел ли это число, которое должно оказаться в массиве. Хотя это уже усложнение, опять же с точки зрения программирования.
Скорее всего, проще считывать числа из строки, на каждом шаге увеличивать на единицу счетчик, помимо увеличения, например, FOR. Соответственно, нужно указать границу максимального значения счетчика, которым вы бежите по строке . Smile

У меня в строке числа, а не цифры, получается сложно. Я хотел поступить следующим образом. Пусть $n=2$ и строка имеет вид s="1234 567". Тогда бы я написал
Код:
sscanf(s,"%i %i",&a,&b);

Как можно модифицировать этот код для произвольного $n$?

 Профиль  
                  
 
 Re: Поиск подстроки
Сообщение24.03.2009, 20:34 


24/03/07
321
AndreyXYZ писал(а):
Здравствуйте!
1. Если ли в С++ функция поиска подстроки в строке?
2. (Не имеет отношения к п. 1). Имеется строка, содержащая $n$ чисел, разделенных пробелами. Какой самый простой способ (с точки зрения программирования) считать их в массив?

1. http://www.cplusplus.com/reference/stri ... /find.html
2. проще всего используя stringstream наверное.
Код:
#include <string>
#include <iostream>
#include <sstream>

string s; // = data
istringstream is(s);
int a;
while(is >> a) ... // с числами a уже делаем че надо

 Профиль  
                  
 
 
Сообщение24.03.2009, 22:26 
Аватара пользователя


27/10/08
222
Поиск работает быстро (алгоритм Кнута-Морриса-Пратта, Бойера-Мура или наивный)? Похоже, что алгоритм самый простой. Тем не менее, большое спасибо.

 Профиль  
                  
 
 
Сообщение25.03.2009, 00:04 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
В стандартной библиотеке функция strstr в точности ищет одну подстроку в другой

http://www.cplusplus.com/reference/clib ... trstr.html

 Профиль  
                  
 
 
Сообщение25.03.2009, 19:46 


21/03/06
1545
Москва
Цитата:
В стандартной библиотеке функция strstr в точности ищет одну подстроку в другой

Однако, strstr - это Си :).

 Профиль  
                  
 
 
Сообщение25.03.2009, 21:01 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Я не думаю, что в данном случае это принципиально.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group