Ol
Oleg

С++ В строке нужно найти словосочетание и заменить его на сокращение. Как записать ?

Допустим, что в текстовом файле есть словосочетание "так далее". Его нужно найти и заменить на сокращение "т. д. " Как найти первое слово - знаю.

if (!strcmp(buff,"тому"))

str1="т. д. ";

Как найти второе? Можно использовать проверку первого, если совпадет - проверить слово через пробел. Как реализовать ?

ЯЗ
Ядовитая Звезда

Какую-то ерунду написали. Если проверяете strcmp, то она сравнивает строку целиком. И зачем проверять слова по отдельности, не проще ли сразу словосочетание?
Вот такую версию разрабатывайте:

for (i = 0; i < length, i++, j++)
if (strncmp( buf + i, phrase, phraseLength) == 0) {
strcat(str1, phraseShort);
i += phraseLength - 1;
j += phraseShortLength - 1;
} else {
str1[j] = buf[i];
}

НБ
Нелли Бовина

Нет.
Просто посимвольно проверяете часть строки на эквивалентность образцу, если совпадает то заменяете. Правда такое решение не оптимальное и работает за O(st)

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

http://e-maxx.ru/algo/z_function

http://e-maxx.ru/algo/prefix_function

Похожие вопросы
замените словосочетание
Замените словосочетание "человеческая жизнь".
Чем можно заменить словосочетание "как бы" в предложениях
bash sed заменить строку строкой
Как записать вырезанные строки с матрицы в пустую матрицу в матлабе?
как найти местоположение строки?
Как записать строку include(Mn,nomer); с Делфи на язык С?
Помогите правильно записать выражение в строку в С++
Как в hex-редакторе найти нужную строку?
Заменить в строке все заглавные буквы в строчные c++