Как склеить строки в си
Перейти к содержимому

Как склеить строки в си

  • автор:

Объединение строковых литералов

Для создания строкового литерала, занимающего более одной строки, можно объединить две строки. Для этого следует ввести обратную косую черту и нажать клавишу ВВОД. Обратная косая черта указывает компилятору игнорировать следующий символ новой строки. Например, строковый литерал

"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

Конкатенация (объединение) строк. Функция strcat.

Функция библиотеки <cstring> strcat позволяет объединять две строки в одну. Функция strcat имеет прототип:

char* strcat (char* str1, const char* str2);

В результате работы функции содержимое строки, на которую указывает str2 присоединяется к содержимому строки, на которую указывает str1. Указатель str1 будет указывать на результирующую строку. Велечина массива str1 должна быть достаточной, чтобы хранить там объединенные строки.

char str1[90]="Press Enter "; char str2[90]="to continue"; strcat(str1,str2); cout

В результате на экран выведется и в строке str1 будет записано: Press Enter to continue

Функция strncat

Функция strncat объединяет строки только до указанного в третьем параметре количества символов включительно. Эта функция имеет прототип:

char* strcat (char* str1, const char* str2, size_t num);
char str1[90]="Press Enter "; char str2[90]="to continue"; strcat(str1,str2,6); cout

Как правильно склеить две строки в Си?

Для склеивания во время выполнения использовать функцию strcat - не самая лучшая идея из-за того, что при каждом склеивании функция снова и снова выполняет сканирование уже построенной части строки. (По этой причине strcat - фактически бесполезная функция.) Лучше уж воспользоваться для этих целей обычным snprintf

#include int main(void)

А уж какой способ резервирования памяти для строки-получателя вам больше подходит - зависит от ваших конкретных обстоятельств и требований.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *