Как добавить элемент в начало строки с
Если надо добавить в конец строки другую строку, применяется метод append() , в который передается добавляемая строка:
#include #include int main() < std::string message< "hello">; message.append(" "); // добавляем пробел message.append("world"); // можно добавить по цепочке // message.append(" ").append("world"); std::cout
Вставка строки
Для вставки одной строки в другую применяется функция insert() . Она имеет несколько различных версий. Самая простая версия принимет индекс вставки и вставляемую строку:
#include #include int main() < std::string text ; std::string str ; text.insert(7, str); std::cout
В данном случае в строку text начиная с 7-го индекса вставляем строку str. В итоге переменная text будет равна "insert a string into a text".
Также можно вставлять строковый литерал:
std::string text ; text.insert(6, "C/"); // Hello C/C++
Можно вставлять часть подстроки:
std::string text ; std::string langs ; text.insert(6, langs, 5, 3); // Langs: C, C++
Здесь в text вставляем из переменной langs 3 символа с 5-го индекса, то есть подстроку " C,".
Среди других версий функции insert() также следует отметить версию, которая позволяет вставить определенный символ определенное число раз:
std::string text ; text.insert(8, 5, '*'); // Number: *****5678
В данном случае вставляем в строку text символ * 5 раз начиная с 8 индекса.
Замена подстроки
Для замены в строке некоторой части применяется функция replace() . Эта функция также имеет много версий, поэтому рассмотрим самые распространенные.
Самая простая версия принимает три параметра:
std::string &std::string::replace(size_t _Off, size_t _Nx, const char *_Ptr)
Первый параметр - представляет индекс, с которого надо заменять подстроку. Второй параметр - количество заменяемых символов. Третий параметр - на какую строку надо заменить. Пример:
#include #include int main() < std::string text ; text.replace(6, 4, "C++"); // Lang: C++ std::cout
Здесь в строке text заменяем 4 символа с 6-го индекса на строку "C++". Таким образом, из строки "Lang: Java" мы получим строку "Lang: C++".
В предыдущем примере символы заменялись на строковый литерал. Но также можно заменять на объект string:
std::string text ; std::string lang <"C++">; text.replace(6, 4, lang); // Lang: C++
Нередко стоит задача заменить какой-то определенную подстроку, индекс которой может быть не известен. В этом случае мы можем воспользоваться поиском в строке, чтобы найти индекс подстроки и ее размер. Например, возьмем текст "Hello, Tom!" и заменим подстроку "Tom" на "Bob":
#include #include int main() < std::string text ; const std::string separators ; // разделители слова size_t start ; // находим позицию подстроки size_t end; // Находим конец подстроки if(end == std::string::npos) // если разделители слова не найдены < end = text.length(); >text.replace(start, end - start, "Alice"); // заменяем подстроку std::cout
Здесь находим позицию первого символа подстроки "Tom" в тексте и сохраняем ее в переменную start. Символ, следующий за последним символом подстроки "Tom", находится путем поиска символа разделителя из строки separators с помощью функции find_first_of() . Далее используем найденные позиции индекса в replace() .
Однако в тексте может быть множество вхождений определенной подстроки (в нашем случае строки "Tom"), и может встать задача заменить все эти вхождения. Для этого мы можем использовать циклы:
#include #include int main() < std::string text ; std::string old_str; // какую подстроку заменить std::string new_str; // на какую строку заменить size_t start ; // находим позицию подстроки while (start != std::string::npos) // находим и заменяем все вхождения строки old_str < text.replace(start, old_str.length(), new_str); // Замена old_str на new_str start = text.find(old_str, start + new_str.length()); >std::cout
Здесь сначала находим индекс первого вхождения подстроки, которую надо заменить, и сохраняем этот индекс в переменную start. В цикле заменяем последовательно все вхождения подстроки. После каждой замены находим индекс следующего вхождения, сохраняем его в переменную start и повторяем цикл. Когда больше нет вхождений подстроки в текст, start будет содержать значение std::string::npos , что завершает цикл.
Из других версий функции replace() можно выделить функцию, которая заменяет подстроку определенным символом, который повторяется определенное количество раз:
std::string text ; text.replace(9, 6, 5, '*'); // Phone: +1*****8901
Здесь заменяет в строке text 6 символов начиная с 9-го индекса на 5 символов *.
Удаление символов
Если надо не просто заменить символы, а удалить их из текста, также можно использовать функцию replace() - в этом случае удаляемые символы фактически заменяются на пустую строку:
#include #include int main() < std::string text ; const std::string empty; text.replace(5, 4, empty); // Замена "Tom" на пустую строку std::cout
Однако С++ также предоставляет для удаления символов специальную функцию - erase() . В качестве параметров она принимает начальный индекс удаления и количество удаляемых символов:
#include #include int main() < std::string text ; text.erase(5, 4); // удаляем 4 символа с 5-го индекса std::cout
Аналогично можно удалить все вхождения определенной подстроки:
#include #include int main() < std::string text ; std::string to_delete; // какую подстроку удалить size_t start ; // находим позицию подстроки while (start != std::string::npos) // находим и удаляем все вхождения to_delete < text.erase(start, to_delete.length()); start = text.find(to_delete, start + to_delete.length()); >std::cout
Функция erase() имеет ряд дополнительных версий. Так, можно оставить определенное количество символов с начала строки, а остальные удалить:
std::string text ; text.erase(5); // удаляем все кроме первых 5 символов - остается "Hello"
Если в функцию не передается никаких параметров, то она удаляет все символы, и в результате получаем пустую строку:
std::string text ; text.erase(); // пустая строка
Стоит отметить, что в стандарт С++20 была добавлена функция std::erase() , которая удаляет все вхождения определенного символа в строке:
#include #include int main() < std::string text ; std::erase(text, 'T'); // Удаляем символ T std::cout
В данном случае удаляем из строки text символ T.
22.6 – Добавление данных к объектам std::string
Добавить строку в конец существующей строки легко, для этого необходимо воспользоваться функцией operator+= , append() или push_back() .
string& string::operator+= (const string& str)
string& string::append (const string& str)
Эти функции добавляют к строке символы str .
- Обе функции возвращают *this , поэтому их можно объединить в «цепочку».
- Обе функции вызывают исключение length_error , если результат превышает максимальное количество символов.
string sString("one"); sString += string(" two"); string sThree(" three"); sString.append(sThree); cout
one two three
Также есть вариант append() , который может добавлять подстроку:
string& string::append (const string& str, size_type index, size_type num)
Эта функция добавляет к строке num символов из строки str , начиная с index .
- Возвращает *this , поэтому ее можно вставить в «цепочку».
- Выбрасывает исключение out_of_range , если индекс выходит за пределы строки.
- Выбрасывает исключение length_error , если результат превышает максимальное количество символов.
string sString("one "); const string sTemp("twothreefour"); // добавляем подстроку строки sTemp, начиная с индекса 3, длиной 5 sString.append(sTemp, 3, 5); cout
one three
operator+= и append() также имеют версии, которые работают со строками в стиле C.
string& string::operator+= (const char* str)
string& string::append (const char* str)
Эти функции добавляют к строке символы str .
- Обе функции возвращают *this , поэтому их можно объединить в «цепочку».
- Обе функции вызывают исключение length_error , если результат превышает максимальное количество символов.
- str не должна быть равна nullptr .
string sString("one"); sString += " two"; sString.append(" three"); cout
one two three
Есть еще один дополнительный вариант append() , который работает со строками в стиле C:
string& string::append (const char* str, size_type len)
Добавляет в строку первые len символов строки str .
- Возвращает *this , поэтому ее можно вставить в «цепочку».
- Выбрасывает исключение length_error , если результат превышает максимальное количество символов.
- Игнорирует специальные символы (включая " ).
string sString("one "); sString.append("threefour", 5); cout
one three
Эта функция опасна, и ее использование не рекомендуется.
Также есть набор функций, которые добавляют символы. Обратите внимание, что имя неоператорной функции для добавления символа – push_back() , а не append() !
string& string::operator+= (char c)
void string::push_back (char c)
Эти функции добавляют к строке символ c .
- operator+= возвращает *this , чтобы его можно было вставить в «цепочку».
- Обе функции вызывают исключение length_error , если результат превышает максимальное количество символов.
string sString("one"); sString += ' '; sString.push_back('2'); cout
one 2
Вам может быть интересно, почему имя этой функции – push_back() , а не append() . Это следует соглашению об именах, используемому для стеков, где push_back() – это функция, которая добавляет один элемент в конец стека. Если вы представляете строку, как стек символов, то для добавления одного символа в ее конец имеет смысл использовать push_back() . Однако, на мой взгляд, отсутствие функции append() выбивается из последовательности!
Оказывается, есть функция append() для символов, которая выглядит так:
string& string::append (size_type num, char c)
Добавляет количество вхождений символа c в строку
- Возвращает *this , чтобы ее можно было вставить в «цепочку».
- Выдает исключение length_error , если результат превышает максимальное количество символов.
string sString("aaa"); sString.append(4, 'b'); cout
aaabbbb
Есть еще один, последний, вариант append() , который вы не поймете, если не знаете, что такое итераторы. Если вы не знакомы с итераторами, можете игнорировать эту функцию.
string& string::append (InputIterator start, InputIterator end)
Добавляет все символы из диапазона [ start , end ) (включая начало, но не включая конец)
- Возвращает *this , чтобы ее можно было вставить в «цепочку».
- Выдает исключение length_error , если результат превышает максимальное количество символов.
Добавить символ в конец строки в C#
В этом посте будет обсуждаться, как добавить символ в конец строки в C#.
1. Использование + оператор
Простое решение для добавления символа в конец строки — использование + оператор. Вот как будет выглядеть код:
using System ;
public class Example
public static void Main ( )
String s = "ab" ;
Console . WriteLine ( s ) ; // abc
Кроме того, вы можете объединить символ в конец строки с помощью += оператор.
using System ;
public class Example
public static void Main ( )
String s = "ab" ;
Console . WriteLine ( s ) ; // abc
Наконец, чтобы объединить символ в начале строки, сделайте следующее:
< pre class = "lang:c# decode:true" >using System ;
public class Example
public static void Main ( )
String s = "bc" ;
Console . WriteLine ( s ) ; // abc
2. Использование StringBuilder
Если вам нужно несколько раз добавить символ в строку, рассмотрите возможность использования StringBuilder . Идея состоит в том, чтобы преобразовать объект String в StringBuilder , и используйте его Append() метод для добавления к нему каждого символа. Наконец, вызовите ToString() метод преобразования StringBuilder обратно в строку. Обратите внимание, что StringBuilder класс доступен под System.Text пространство имен.
Как добавить элемент в начало списка Python

Добавление элемента в начало списка является распространенной операцией при работе с данными в Python. В некоторых случаях порядок элементов имеет значение, и необходимо вставить новый элемент в самое начало списка. В этой статье мы рассмотрим различные способы добавления элемента в начало списка в Python.
Мы изучим несколько подходов, каждый из этих способов имеет свои преимущества и может быть выбран в зависимости от конкретной задачи. Ознакомившись с различными способами добавления элемента в начало списка, вы сможете эффективно манипулировать данными и легко реализовывать нужную логику в своих программах. Давайте рассмотрим каждый способ более подробно.
Использование метода insert()
Метод insert() предоставляет простой способ добавления элемента в начало списка в Python. Он позволяет вставить новый элемент на определенную позицию, сдвигая существующие элементы вправо.
Синтаксис метода insert() выглядит следующим образом:
list.insert(index, element)
- list: это имя списка, к которому применяется метод insert().
- index: это позиция, на которую нужно вставить элемент. В нашем случае это будет 0, чтобы элемент добавлялся в начало списка.
- element: это элемент, который мы хотим вставить в список.
Пример использования метода insert() для добавления элемента в начало списка:
my_list = ['apple', 'banana', 'cherry'] my_list.insert(0, 'orange') print(my_list) # Вывод: ['orange', 'apple', 'banana', 'cherry']
В данном примере мы создали список my_list с элементами ‘apple’, ‘banana’ и ‘cherry’. Затем мы использовали метод insert() для вставки элемента ‘orange’ на позицию 0, что привело к добавлению элемента в начало списка. Результатом является список ['orange', 'apple', 'banana', 'cherry'] .
Метод insert() позволяет гибко управлять позицией, на которую нужно вставить элемент, и может быть использован для добавления элемента в любую позицию внутри списка. Он также автоматически сдвигает существующие элементы, чтобы создать место для нового элемента.
Использование метода insert() является простым и эффективным способом добавления элемента в начало списка в Python.
Использование оператора «+»
В Python можно использовать оператор «+» для объединения двух списков. При этом можно воспользоваться этим оператором, чтобы добавить элемент в начало списка.
Пример использования оператора «+» для добавления элемента в начало списка:
my_list = ['apple', 'banana', 'cherry'] my_list = ['orange'] + my_list print(my_list) # Вывод: ['orange', 'apple', 'banana', 'cherry']
В данном примере мы создали список my_list с элементами ‘apple’, ‘banana’ и ‘cherry’. Чтобы добавить элемент ‘orange’ в начало списка, мы использовали оператор «+» для объединения списка ['orange'] с my_list . Результатом является новый список ['orange', 'apple', 'banana', 'cherry'] .
Использование оператора «+» для добавления элемента в начало списка является удобным и прямолинейным способом. Он позволяет легко комбинировать и изменять списки в Python. Однако следует помнить, что оператор «+» создает новый список, а не изменяет существующий, поэтому необходимо присвоить результат обратно переменной списка, как показано в примере выше.