Nilesh Sinha Ответов: 2

Замена элемента в строке


предположим, мой str держится:
str= " helloHowAreYou";
Теперь я хочу сдвинуть индексы строки назад с определенной позиции и
моя новая строка будет содержать.
str= "heoHowAreYou".
Мой код вывода str= " heoHowAreYou Y",
Любая помощь будет оценена по достоинству

Что я уже пробовал:

#include <iostream>
#include<cstring>
using namespace std;
void shift(string arr,int be)
{
    int j=be;
    while(arr[j]!='\0')
    {
        j++;
    }
    int k=j-2;
    while(be<=k)
    {
        arr[be]=arr[be+2];
        be++;
    }
    cout<<arr;

}
int main(int argc, char const *argv[])
{
    string str;
    str="helloHowAreyou";
    shift(str,2);
    return 0;
}

2 Ответов

Рейтинг:
1

Jochen Arndt

Ваш пример удаляет 2 символа в позиции 2.

Есть std::string метод, который может это сделать: std:: basic_string:: erase - cppreference.com[^]:

string str = "helloHowAreyou";
str.erase(2, 2);
cout << str;


Рейтинг:
0

Patrice T

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

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя-отладчик. Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.