Nilesh Sinha Ответов: 3

Сдвинуть индексы в строке?


как я могу сдвинуть индексы в строке, предположим, я объявил строку, т. е.

Строка str;
ул. Кин&ГТ;&ГТ;;
// теперь я хочу изменить ту же строку, что и переместить элементы в
// строка по определенному номеру.
//например

str= " привет";
// скажем, сдвиг 2 дворцов от ч.
str= " h ello ";
//я не хочу использовать символьный массив.

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

// Любая помощь будет оценена по достоинству.

3 Ответов

Рейтинг:
23

CPallini

Если вам нужно вставлять пробелы где-то в строке (как следует из вашего примера), то string::insert метод (см. последовательность: вставка - ссылки c++ [^]) твой друг:

#include <iostream>
#include <string>

using namespace std;

int main()
{
  string s = "hello";
  s.insert(1, 1, ' ');
  s.insert(s.end(), 1, ' ');
  cout << "'" << s << "'" << endl;
}


Рейтинг:
2

OriginalGriff

Это будет зависеть от того, в какой среде будет работать ваше приложение: приложение CLR может использовать один строковый класс, который имеет функции подстроки, в то время как собственное приложение может использовать другой строковый класс, который поддерживает substr.

Но в основном операция будет проходить по линии:

newstring = substring(original, 0, 1) + " " + substring(original, 1, lengthOfTheOriginalString - 1)

Проверьте свои классы на наличие точных функций и параметров для использования.

И вы понимаете, что в сущности, любая струна является массив символов?


Рейтинг:
18

Jochen Arndt

Ваш вопрос неясен.

Ваш пример "he llo" не сдвинут, но имеет вставленный пробел. Операция сдвига приведет к чему-то вроде "Элло" (сдвиг влево на единицу) или "Привет" (сдвиг вправо на единицу; может быть также "ад" в зависимости от определения сдвига).

Проверьте методы, предоставляемые вашим классом String. Там могут быть функции, которые могут быть использованы (кандидаты вставить(), функцию substr(), влево(), вправо(), средний()).

Обратите также внимание, что строковый класс обычно представляет собой не что иное, как динамический массив символов.