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

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




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

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

 
Аватара пользователя
DoGGy в сообщении #198228 писал(а):
По поводу первого, вы ищите функцию, подобную функции pos в Паскале ?

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

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

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

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

 Re: Поиск подстроки
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 уже делаем че надо

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

 
Аватара пользователя
В стандартной библиотеке функция strstr в точности ищет одну подстроку в другой

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

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

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

 
Аватара пользователя
Я не думаю, что в данном случае это принципиально.

 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group