Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Saiberg
19 / 19 / 2
Регистрация: 23.09.2010
Сообщений: 193
#1

найти некоторую строку в другой строке, не оканчивающейся \0

28.07.2011, 15:05. Просмотров 601. Ответов 8
Метки нет (Все метки)

мапю текстовый файл в память. нужно в нем найти некоторую строку, как бы это сделать ? Писать свою функцию не хотелось бы.

P.S. на си. алгоритмы типо std::search не советуйте
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2011, 15:05
Ответы с готовыми решениями:

Найти строку в другой строке
#include <iostream> #include <string> #include <algorithm> using namespace std; int...

Посчитать количество слов в строке, оканчивающейся точкой.
имеется код, программка считает правда не слова, а пробелы) проблема в том, что если строка...

Перевод чисел в строку и прибавление к этой строке другой строки
Есть 2 числа. Сначала мы переводим эти числа в char' ы. Потом нужно создать строку, которая будет...

Функция: дописать одну строку в конец другой и посчитать количество пробелов в строке
Функция дописывает одну строку в конец другой и считает количество пробелов в строке, причем рядом...

Найти в файле самую длинную строку и переписать её в другой файл
всем привет возник такой вопрос есть файл в который вносятся числа разного количества. по этому...

8
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 15:10 #2
раз вы такое
Цитата Сообщение от Saiberg Посмотреть сообщение
мапю текстовый файл в память.
делаете, то почему бы не использовать
Цитата Сообщение от Saiberg Посмотреть сообщение
std::search
?
0
Saiberg
19 / 19 / 2
Регистрация: 23.09.2010
Сообщений: 193
28.07.2011, 15:16  [ТС] #3
ну потому, что это с++, а его мне исспользовать не хотелось бы т.к. весь проект на си

bsearch сишный бинарный поиск, но его тоже как то не охото юзать, в общем даже не знаю, что я хочу услышать : )
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 15:17 #4
ну дык strstr вам в помощь
0
Saiberg
19 / 19 / 2
Регистрация: 23.09.2010
Сообщений: 193
28.07.2011, 15:19  [ТС] #5
0 в конце текстового файла может и не быть, а strstr ищет пока не встретит 0 % )
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 15:20 #6
добавте ноль самостоятельно, или возьмите реализацию strstr и перепишите чтоб параметром передавалось размерность строки
0
Saiberg
19 / 19 / 2
Регистрация: 23.09.2010
Сообщений: 193
28.07.2011, 15:23  [ТС] #7
ну это самый плохой вариант, как мне кажется... лучше уж strnstr заиплементить)

//---------
так и сделаю, если не придумаю/подскажут что нить другое
0
easybudda
Модератор
Эксперт CЭксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,321
28.07.2011, 22:50 #8
memmem
В msdn что-то ничего похожего не нашёл, но можно просто gnuтую реализацию взять...
Вот к примеру:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * The memmem() function finds the start of the first occurrence of the
 * substring 'needle' of length 'nlen' in the memory area 'haystack' of
 * length 'hlen'.
 *
 * The return value is a pointer to the beginning of the sub-string, or
 * NULL if the substring is not found.
 */
void *memmem(const void *haystack, size_t hlen, const void *needle, size_t nlen)
{
    int needle_first;
    const void *p = haystack;
    size_t plen = hlen;
 
    if (!nlen)
        return NULL;
 
    needle_first = *(unsigned char *)needle;
 
    while (plen >= nlen && (p = memchr(p, needle_first, plen - nlen + 1)))
    {
        if (!memcmp(p, needle, nlen))
            return (void *)p;
 
        p++;
        plen = hlen - (p - haystack);
    }
 
    return NULL;
}
Не моё, нашёл, не проверял...
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
29.07.2011, 06:28 #9
Цитата Сообщение от Saiberg
Писать свою функцию не хотелось бы.
на основе memcmp() получится небольшая
0
29.07.2011, 06:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 06:28

В каждой строке найти самое длинное слово и записать результат в другой текстовый файл
В текстовом файле хранятся слова, разделенные пробелами. В каждой строке найти самое длинное слово...

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

Найти в каждой строке наибольший элемент и удалить строку с наименьшим элементом
В каждой строке найти наибольший элемент. Из этих элементов найти наименьший и удалить ту строку,...


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

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

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