Объединение строковых литералов
Для создания строкового литерала, занимающего более одной строки, можно объединить две строки. Для этого следует ввести обратную косую черту и нажать клавишу ВВОД. Обратная косая черта указывает компилятору игнорировать следующий символ новой строки. Например, строковый литерал
"Long strings can be bro\ ken into two or more pieces."
"Long strings can be broken into two or more pieces."
Вместо использования обратной косой черты с последующим символом новой строки для ввода строк, длина которых превышает одну строку, можно использовать объединение строк.
Чтобы принудительно создать новую строку внутри строкового литерала, следует ввести escape-последовательность новой строки ( \n) в том месте строки, где требуется сделать разрыв:
"Enter a number between 1 and 100\nOr press Return"
Поскольку строки могут начинаться в любом столбце исходного кода и длинные строки можно продолжать в любом столбце последующей строки, строки можно позиционировать для повышения удобства чтения исходного кода. В любом случае их представление на экране при выводе результата не затрагивается. Пример:
printf_s ( "This is the first half of the string, " "this is the second half ") ;
Так как каждая часть строки заключается в двойные кавычки, части объединяются и результат отображается в виде одной строки. Такое объединение происходит в соответствии с последовательностью событий во время компиляции, определенной этапами преобразования.
"This is the first half of the string, this is the second half"
Указатель на строку, инициализированный как два разных строковых литерала, разделенных только пробелом, хранится в виде одной строки (указатели рассматриваются в разделе Объявления указателей). При правильном выполнении ссылки (см. следующий пример) результат идентичен результату предыдущего примера.
char *string = "This is the first half of the string, " "this is the second half"; printf_s( "%s" , string ) ;
На шестом этапе преобразования последовательности многобайтовых символов, заданные любой последовательностью соседних строковых литералов или соседних двухбайтовых строковых литералов, объединяются в одну последовательность многобайтовых символов. Поэтому не следует разрабатывать программы, допускающие изменение строковых литералов во время выполнения. В стандарте ANSI C указывается, что результат изменения строки не определен.
Конкатенация строк в C++: 4 способа конкатенации строк
В этой статье мы раскроем различные способы выполнения конкатенации строк в языке C++. Этот метод можно использовать для различных целей при программировании. Но в целом концепция такая же, как объединение двух строк из разных мест и размещение их вместе.
Методы конкатенации строк в C++
При объединении строк в C++ можно учитывать следующие методы:
- Оператор конкатенации (+) C++
- Метод strcat()
- Функция C++ append()
- Использование цикла C++ for для конкатенации
1. C++ оператор «+» для конкатенации строк
С++ оператор + можно использовать для простого объединения двух строк.
Оператор «+» складывает две входные строки и возвращает новую строку, содержащую объединенную строку.
string1 + string2;
#include using namespace std; int main() < string str1="", str2=""; cout>str1; cout>str2; string res = str1 + str2; cout
Enter String 1: Journal Enter String 2: Dev Concatenated String: JournalDev
2. Метод С++ strcat()
C++ имеет встроенный метод для объединения строк. Метод strcat() используется для объединения строк в C++.
Функция strcat() принимает массив символов в качестве входных данных, а затем объединяет входные значения, переданные функции.
strcat(char *array1, char *array2)
#include using namespace std; int main()
В приведенном выше примере мы объявили два массива символов, в основном str1 и str2 размером 100 символов. Затем мы передали массив символов str1 и str2 функции strcat(), чтобы в результате получить конкатенированную строку.
Concatenated String: JournalDev
#include using namespace std; int main()
В приведенном выше примере мы принимаем строковые входные значения от пользователя с помощью функции C++ getline() , которая извлекает ввод из терминала символ за символом.
Enter String 1: JournalDev- Enter String 2: Python Concatenated String: JournalDev-Python
3. Метод append() для конкатенации строк в C++
C++ имеет еще один встроенный метод: append() для объединения строк. Метод append() можно использовать для сложения строк. Он принимает строку в качестве параметра и добавляет ее в конец другого строкового объекта.
string1.append(string2);
#include using namespace std; int main() < string str1="", str2=""; cout>str1; cout>str2; str1.append(str2); cout
В приведенном выше примере мы передали str2 в качестве параметра функции append(). Кроме того, функции append() добавляют содержимое строкового объекта str2 в конец содержимого строкового объекта str1. Таким образом, служит цели конкатенации строк.
Enter String 1: Journal Enter String 2: Dev Concatenated String: JournalDev
4. Использование цикла C++ for
Чтобы объединить строки, мы можем использовать циклы C++ for для достижения этой цели без необходимости использования какой-либо встроенной функции.
#include #include using namespace std; int main() < char x[100]="Journal", y[100]="Dev"; coutx[p]='\0'; cout
В приведенном выше фрагменте кода мы в основном приняли два входных массива символов: x и y соответственно.
Далее мы прошлись по строке массива символов x до тех пор, пока переменная-указатель p не укажет на индекс последнего символа x.
Затем мы проходим через ввод символов массива символов y и объединяем каждый символ y с x.
В конце мы добавляем нулевой символ (\0) в конец массива символов x, который в результате теперь содержит объединенную строку.
String 1: Journal String 2: Dev Concatenated String: JournalDev
Заключение
Таким образом, в этой статье мы познакомились с различными методами объединения строк в языке C++.
Рекомендации
- Объединение строк в C++ – StackOverFlow
Объединение двух строк на C++
В этом примере вы научитесь объединять (соединять) две строки на C++(как строковые объекты, так и строки в стиле C).
Вы можете объединить два строковых объекта в си++ с помощью оператора +.
#include using namespace std; int main() < string s1, s2, result; cout Enter string s1: C++ Programming Enter string s2: is awesome. Resultant String = C++ Programming is awesome.
Вы можете объединить две строки в C и C ++ с помощью функции strcat().
#include #include using namespace std; int main() < char s1[50], s2[50]; cout Enter string s1: I love Enter string s2: C++ programming s1 = I love C++ programming s2 = C++ programming
- Преобразование восьмеричного числа в десятичное и наоборот в C++
- Преобразование двоичного числа в восьмеричное и наоборот в C++
- Как перевернуть строку в C++
- Свежие записи
- Функция iscntrl() в C++
- Функция isdigit() в С++
- Функция isblank() в C++
- Функция isgraph() в C++
- Функция islower() в C++
Как объединить строки в c
Конкатенация строк или объединение может производиться как с помощью операции + , так и с помощью метода Concat :
string s1 = "hello"; string s2 = "world"; string s3 = s1 + " " + s2; // результат: строка "hello world" string s4 = string.Concat(s3, ". "); // результат: строка "hello world. " Console.WriteLine(s4);
Метод Concat является статическим методом класса string, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров.
Для объединения строк также может использоваться метод Join :
string s5 = "apple"; string s6 = "a day"; string s7 = "keeps"; string s8 = "a doctor"; string s9 = "away"; string[] values = new string[] < s5, s6, s7, s8, s9 >; string s10 = string.Join(" ", values); Console.WriteLine(s10); // apple a day keeps a doctor awayМетод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем.
Сравнение строк
Для сравнения строк применяется статический метод Compare :
string s1 = "hello"; string s2 = "world"; int result = string.Compare(s1, s2); if (result <0) < Console.WriteLine("Строка s1 перед строкой s2"); >else if (result > 0) < Console.WriteLine("Строка s1 стоит после строки s2"); >else < Console.WriteLine("Строки s1 и s2 идентичны"); >// результатом будет "Строка s1 перед строкой s2"Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай - если строки равны, то возвращается число 0.
В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.
Поиск в строке
С помощью метода IndexOf мы можем определить индекс первого вхождения отдельного символа или подстроки в строке:
string s1 = "hello world"; char ch = 'o'; int indexOfChar = s1.IndexOf(ch); // равно 4 Console.WriteLine(indexOfChar); string substring = "wor"; int indexOfSubstring = s1.IndexOf(substring); // равно 6 Console.WriteLine(indexOfSubstring);
Подобным образом действует метод LastIndexOf , только находит индекс последнего вхождения символа или подстроки в строку.
Еще одна группа методов позволяет узнать начинается или заканчивается ли строка на определенную подстроку. Для этого предназначены методы StartsWith и EndsWith . Например, в массиве строк хранится список файлов, и нам надо вывести все файлы с расширением exe:
var files = new string[] < "myapp.exe", "forest.jpg", "main.exe", "book.pdf", "river.png" >; for (int i = 0; i
Разделение строк
С помощью функции Split мы можем разделить строку на массив подстрок. В качестве параметра функция Split принимает массив символов или строк, которые и будут служить разделителями. Например, подсчитаем количество слов в сроке, разделив ее по пробельным символам:
string text = "И поэтому все так произошло"; string[] words = text.Split(new char[] < ' ' >); foreach (string s in words)
Это не лучший способ разделения по пробелам, так как во входной строке у нас могло бы быть несколько подряд идущих пробелов и в итоговый массив также бы попадали пробелы, поэтому лучше использовать другую версию метода:
string[] words = text.Split(new char[] < ' ' >, StringSplitOptions.RemoveEmptyEntries);
Второй параметр StringSplitOptions.RemoveEmptyEntries говорит, что надо удалить все пустые подстроки.
Обрезка строки
Для обрезки начальных или концевых символов используется функция Trim :
string text = " hello world "; text = text.Trim(); // результат "hello world" text = text.Trim(new char[] < 'd', 'h' >); // результат "ello worl"
Функция Trim без параметров обрезает начальные и конечные пробелы и возвращает обрезанную строку. Чтобы явным образом указать, какие начальные и конечные символы следует обрезать, мы можем передать в функцию массив этих символов.
Эта функция имеет частичные аналоги: функция TrimStart обрезает начальные символы, а функция TrimEnd обрезает конечные символы.
Обрезать определенную часть строки позволяет функция Substring :
string text = "Хороший день"; // обрезаем начиная с третьего символа text = text.Substring(2); // результат "роший день" Console.WriteLine(text); // обрезаем сначала до последних двух символов text = text.Substring(0, text.Length - 2); // результат "роший де" Console.WriteLine(text);
Функция Substring также возвращает обрезанную строку. В качестве параметра первая использованная версия применяет индекс, начиная с которого надо обрезать строку. Вторая версия применяет два параметра - индекс начала обрезки и длину вырезаемой части строки.
Вставка
Для вставки одной строки в другую применяется функция Insert :
string text = "Хороший день"; string substring = "замечательный "; text = text.Insert(8, substring); Console.WriteLine(text); // Хороший замечательный день
Первым параметром в функции Insert является индекс, по которому надо вставлять подстроку, а второй параметр - собственно подстрока.
Удаление строк
Удалить часть строки помогает метод Remove :
string text = "Хороший день"; // индекс последнего символа int ind = text.Length - 1; // вырезаем последний символ text = text.Remove(ind); Console.WriteLine(text); // Хороший ден // вырезаем первые два символа text = text.Remove(0, 2); Console.WriteLine(text); // роший ден
Первая версия метода Remove принимает индекс в строке, начиная с которого надо удалить все символы. Вторая версия принимает еще один параметр - сколько символов надо удалить.
Замена
Чтобы заменить один символ или подстроку на другую, применяется метод Replace :
string text = "хороший день"; text = text.Replace("хороший", "плохой"); Console.WriteLine(text); // плохой день text = text.Replace("о", ""); Console.WriteLine(text); // плхй деньВо втором случае применения функции Replace строка из одного символа "о" заменяется на пустую строку, то есть фактически удаляется из текста. Подобным способом легко удалять какой-то определенный текст в строках.
Смена регистра
Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower() :
string hello = "Hello world!"; Console.WriteLine(hello.ToLower()); // hello world! Console.WriteLine(hello.ToUpper()); // HELLO WORLD!