C++ Удвоить Все Найденные Вхождения Строки В Текст

  • Автор темы prettynetty
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

prettynetty

#1
c++ visual
Задание: дан текст и строка. удвойте все найденные вхождения строки.
насколько я понимаю, если ввести текст "мама мыла раму" и строку"мыла", то должно получиться "мама мыламыла раму".
прочитала тут про функцию Pos, пытаюсь ее применить, но компилятор ругается. может эта функция только для билдера? помогите решить задачку хоть как нибудь.
доп.условие: ввод и вывод русского текста
<!--shcode--><pre><code class='SELECT AnyThing FROM SomeThing'>#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>


int main()
{
SetConsoleOutputCP(1251);
char text[256], text2[256], str[64];
int i, j;
printf("введите текст:\n");
fflush(stdin);
gets(text);
OemToChar(text, text);
printf("введите строку:\n");
fflush(stdin);
gets(str);
OemToChar(str, str);
if(strstr(text, str)!=NULL){
for(i = 0; i < text.Pos(str); i++)
text2=text;
for(i = text.Pos(str), j=0; j < strlen(str); i++, j++)
text2=str[j];
for(i = text.Pos(str)+strlen(str), j=text.Pos(str); j < strlen(text); i++, j++)
text2=text[j];
}
printf("результат:%s\n", text);
system("pause");
return 0;}[/CODE]
 
R

rrrFer

#2
ммм... очень сложно пишите, я бы использовал std ::find и std ::string
у стандартных строк перегружен оператор + (конкатенация), поэтому формировать новую строку было бы удобно
 
R

rrrFer

#3
в вашем коде, скорее всего полагается что Pos ищет первое вхождение подстроки в строке.
В стандартной библиотеке для этого можно использовать strstr (древняя функция, МБ вам более подойдет) или str ::string ::find() или std ::search
 
Статус
Закрыто для дальнейших ответов.