• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

prettynetty

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

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

rrrFer

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!