Строки С++
C ++ предоставляет следующие два типа строковых представлений —
- Строка символов в стиле C.
- Тип класса string, представленный в Standard C++.
Строка символов стиля C
Строка символов в стиле C возникла в языке C и продолжает поддерживаться в C++. Эта строка на самом деле представляет собой одномерный массив символов, заканчивающийся нулем. символ '\0'. Таким образом, строка с завершающим нулем содержит символы, из которых состоит строка, за которой следует null. .
Следующее объявление и инициализация создают строку, состоящую из слова «Hello». Чтобы содержать нулевой символ в конце массива, размер массива символов, содержащего строку, должен быть на единицу больше, чем количество символов в слове «Hello».
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Если вы следуете правилу инициализации массива, то вы можете написать приведенный выше оператор следующим образом —
char greeting[] = "Hello";
Ниже приведено представление в памяти определенной выше строки в C/C++ —
На самом деле вы не ставите нулевой символ в конце строковой константы. Компилятор C++ автоматически помещает '\0' в конец строки при инициализации массива. Давайте попробуем напечатать вышеупомянутую строку —
Живая демонстрация
#include <iostream>
using namespace std;
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Greeting message: ";
cout << greeting << endl;
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —
Greeting message: Hello
C++ поддерживает широкий спектр функций, которые управляют строками с завершающим нулем —
| Старший № | Функция и назначение |
|---|---|
| 1 | <тд>|
| 2 | <тд>|
| 3 | <тд>|
| 4 | <тд>|
| 5 | <тд>|
| 6 | <тд>
В следующем примере используются некоторые из вышеупомянутых функций —
Живая демонстрация
#include <iostream>
#include <cstring>
using namespace std;
int main () {
char str1[10] = "Hello";
char str2[10] = "World";
char str3[10];
int len ;
// copy str1 into str3
strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl;
// concatenates str1 and str2
strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl;
// total lenghth of str1 after concatenation
len = strlen(str1);
cout << "strlen(str1) : " << len << endl;
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он выдает что-то вроде следующего:
strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10
Класс String в C++
Стандартная библиотека C++ предоставляет строку тип класса, который поддерживает все операции, упомянутые выше, а также гораздо больше функциональных возможностей. Давайте проверим следующий пример —
Живая демонстрация
#include <iostream>
#include <string>
using namespace std;
int main () {
string str1 = "Hello";
string str2 = "World";
string str3;
int len ;
// copy str1 into str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// concatenates str1 and str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// total length of str3 after concatenation
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он выдает что-то вроде следующего:
str3 : Hello str1 + str2 : HelloWorld str3.size() : 10
Язык C
- C# Строка
- Операторы С++
- С++ Комментарии
- Шаблоны классов С++
- Java-строки
- Строки перечисления Java
- Переменные и типы С++:int, double, char, string, bool
- Строки C++:strcpy(), strcat(), strlen(), strcmp() ПРИМЕРЫ
- Строки в C:как объявить переменную, инициализировать, распечатать, пример
- Java — класс строк