Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 115
1

Вставить подстроку в строку(без использования библиотечного метода Insert)

07.09.2019, 16:36. Показов 1283. Ответов 5
Метки нет (Все метки)

Не получается реализовать вставку подстроки в строку перед index
код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void String::Insert(char* s, int index )
{
    int count = 0;
    char* str1;
    int secondCount = 0;
    str1=new char[lengthStr + 1+index];
    for (int i = 0; i < lengthStr + 1; i++)
    {
            str1[count] = str[i];
            count++;
    }
 
    for (int i = index + count,j=0;j<index; i++,j++)
    {
 
        str1[secondCount] = s[j];
        count++;
        secondCount++;
    }
Имеется две строки:
1) хранится слово "Бегемотик"
2) хранится слово "Жук"
и получается только так :Жугеметик
а должно быть так: Жукбегемотик
И нужно, чтобы можно было вставить подстроку в любом месте строки(то есть до передаваемого числа index)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2019, 16:36
Ответы с готовыми решениями:

Вставить подстроку в строку
Дано строка и подстрока. Вставить указанный подстроку в начальную строку через 2, 4, 8 ... символов.

Вставить подстроку в строку, начиная с позиции n
Надо вставить подстроку в строку, начиная с позиции n.

Вставить указанную подстроку в начальный строку через 2, 4, 8 ... символов
Дана строка и порядок. Вставить указанный подстроку в начальный строку через 2, 4, 8 ... символов.

Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy

5
Нарушитель
1486 / 1288 / 485
Регистрация: 16.08.2014
Сообщений: 5,415
Записей в блоге: 1
07.09.2019, 16:57 2
artur31154, вот может прокатит, не тестировал.
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
void String::Insert(char* s, int index )
{
    char* str1;
    str1=new char[lengthStr + 1+strlen(s)];
    int c = 0;
 
    for (; c < index + 1; c++)
    {
            str1[c] = str[c];
    }
 
    for (int i = index,j=0;j<strlen(s) + 1; i++,j++)
    {
        str1[i] = s[j];
        index++;
    }
 
    for (int i = index; i < lengthStr; ++i)
    {
        str1[i] = str[c++]; 
    }
 
    delete[] str;
    str = st1;
}
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 115
07.09.2019, 17:03  [ТС] 3
_stanislav,
Прошагал и получается БеЖук,
а нужно перед вводимым индексом вставить и получится так:
Жукбегемотик
0
Нарушитель
1486 / 1288 / 485
Регистрация: 16.08.2014
Сообщений: 5,415
Записей в блоге: 1
07.09.2019, 17:05 4
Цитата Сообщение от artur31154 Посмотреть сообщение
Прошагал и получается БеЖук
в последнем цикле проблема, недописывает
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 115
07.09.2019, 17:15  [ТС] 5
_stanislav, хм...
0
Нарушитель
1486 / 1288 / 485
Регистрация: 16.08.2014
Сообщений: 5,415
Записей в блоге: 1
07.09.2019, 17:24 6
Лучший ответ Сообщение было отмечено artur31154 как решение

Решение

artur31154, попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* str1 {};
str1=new char[lengthStr + 1+strlen(s)];
int c = 0;
 
for (; c < index; c++)
{
    str1[c] = str[c];
}
 
for (int i = index,j=0;j<strlen(s) + 1; i++,j++)
{
    str1[i] = s[j];
    index++;
}
 
for (int i = index - 1; c < lengthStr; ++i)
{
    str1[i] = str[c++]; 
}
Добавлено через 1 минуту
примерно так, до ума доведешь и ошибки исправишь сам, принцип примерно такой должен быть.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2019, 17:24

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а,...

Вызов метода из vector(a) в функции main без использования вызова execute внутри класса
Добрый день столкнулся с проблемой, что просто не могу вызвать метод из вектора в функции main. Код...

Вставить подстроку в строку не используя метод Insert
Доброго времени суток! Подскажите, пожалуйста, каким образом можно вставить подстроку в строку без...

Вставить подстроку ss в строку s с позиции N
Дан текст, хранящийся в строковой переменной s, вставить подстроку ss в строку s с позиции N. N...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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