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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
#1

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

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

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

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

Найти строку в другой строке - C++
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string t("Jon"),...

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

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

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

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

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

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

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

//---------
так и сделаю, если не придумаю/подскажут что нить другое
0
easybudda
Модератор
Эксперт CЭксперт С++
9633 / 5581 / 948
Регистрация: 25.07.2009
Сообщений: 10,715
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
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.07.2011, 06:28 #9
Цитата Сообщение от Saiberg
Писать свою функцию не хотелось бы.
на основе memcmp() получится небольшая
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 06:28
Привет! Вот еще темы с ответами:

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

Считать строку из файла и найти позицию заданного символа (непонятный символ в строке) - C++
Есть у меня вот такая вот строка 181x77х1 Лежит в файле. Я ее считываю и хочу найти позицию символа 'x' не получается. ...

Найти во входной строке самую внутреннюю пару скобок {.} и переписать в выходную строку - C++
Помогите, пожалуйста, разобраться с кодом! Не могу понять, что делать дальше #include<conio.h> #include<stdio.h> char*...

Найти строку, содержащую минимальный элемент матрицы, и поменять в этой строке элементы 1-го и 4-го столбца - C++
Найти строку, содержащую минимальный элемент матрицы, и поменять в этой строке элементы 1-го и 4-го столбца. -7 -12 0 1 3...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.07.2011, 06:28
Ответ Создать тему
Опции темы

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