Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Saiberg
 Аватар для Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
28.07.2011, 15:05     найти некоторую строку в другой строке, не оканчивающейся \0 #1
мапю текстовый файл в память. нужно в нем найти некоторую строку, как бы это сделать ? Писать свою функцию не хотелось бы.

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

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

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

//---------
так и сделаю, если не придумаю/подскажут что нить другое
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.07.2011, 22:50     найти некоторую строку в другой строке, не оканчивающейся \0 #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;
}
Не моё, нашёл, не проверял...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 06:28     найти некоторую строку в другой строке, не оканчивающейся \0
Еще ссылки по теме:

Найти в файле самую длинную строку и переписать её в другой файл C++
Потоковый ввод-вывод. В уже созданном файле необходимо найти и заменить некоторую запись C++
Найти строку, содержащую минимальный элемент матрицы, и поменять в этой строке элементы 1-го и 4-го столбца C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.07.2011, 06:28     найти некоторую строку в другой строке, не оканчивающейся \0 #9
Цитата Сообщение от Saiberg
Писать свою функцию не хотелось бы.
на основе memcmp() получится небольшая
Yandex
Объявления
29.07.2011, 06:28     найти некоторую строку в другой строке, не оканчивающейся \0
Ответ Создать тему
Опции темы

Текущее время: 11:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru