betacode

Руководство C/C++ String

  1. C-Style String
  2. C++ Style String

1. C-Style String

String
В C++ имеется два вида строка (string), строки в стиле C (C-style string), и строки в стиле C++ (C++-Style string).
C-Style string это массивы знаков, но есть разные функции использующиеся для строк, например добавление в строки, нахождение длины строк, и так же проверка соответствия строк с регулярным выражением (regular expression).
Определение строки будет то, что содержит более одного знака связанных друг с другом. Например, "this" это строка. При этом, один знак не считается строкой, несмотря на то, что они используются как строки.
String это массив знаков. Используйте ковычки для отметки строки букв (string literals)
// Declare a C-Style String.
char mystring[] = { 't', 'h', 'i', 's', ' ', 'i', 's' ,' ', 't', 'e', 'x', 't', '\0'};

// This is a string literal.
char mystring[] = "this is text'';
StringLiteralExample.cpp
#include <stdio.h>

int main() {

   // Declare a String literal.
   char s1[] = "What is this";

   // Print out the string
   printf("Your string = %s", s1);

   fflush(stdout);

   return 0;
}
Результаты запуска примера:
  • char mystr[] = "what is this";
Строка string выше имеет 12 знаков, для объявления того string в C вам нужно объявить массив знаков с 13 элементами, запомните, что последний элемент в массиве это знак null (код '\0'), это означает конец string. Этот последний знак не имеет значение в вашей строке, но он нужен для программ C, например указатель (pointer) указывает на позицию string он будет стоять в позиции первого знака, и чтобы получить содержание строки, программа загрузит следующий элемент до тех пор, когда не встретит знак null.
В случае если у вас есть массив знаков и при этом есть знак null, который не находится в конце массива, или много знаков null в массиве. Но C будет считать, что этот массив содержит string, включая первый знак до первого знака null в массиве.
Следующий пример объявляет массив знаков с 100 элементами использующиеся для хранения текста, который был введен пользователем с клавиатуры. В этом случе все знаки введенной строки будут прикреплены первому элементу в массиве и затем знак null. И следующие элементы не могут быть прикреплены.
StringFromKeyboardExample.cpp
#include <stdio.h>

int main() {

   // Declare an array of characters with 100 elements,
   // used to store user input string from the keyboard.
   char s1[100];

   printf("Enter your string: \n");
   fflush(stdout);

   // scanf function wait user input from the keyboard.
   // (Press enter to end).
   // It will scan to get a string and assigned to the variable s1.
   // (%s: scan a string does not contain spaces)
   scanf("%s", s1);

   printf("Your string = %s", s1);

   fflush(stdout);

   return 0;
}
Результаты запуска примера:
Функции для C-style String
C предоставляет некоторые функции для работы с String. Он располагается в стандартной библиотеке <string.h>. Далее я перечислю некоторые общие функции C связанные с string (не все).
Некоторые функции для String.
Название функции
Описание
size_t strlen(const char *str)
Вычисляет длину строки, не считая завершающий символ (символ null)
char *strcpy(char *dest, const char *src)
Копирует строку 'src' в 'dest'.
int strcmp(const char *str1, const char *str2)
Сравнивает 2 строки данные параметром указателя str1, и str2. Возвращает целое число > 0 то есть str1 > str2. И = 0 это 2 одинаковые строки, наоборот str1 < str2.
char *strcat(char *dest, const char *src)
Добавляет строку, на которую указывает src к концу строки на которую указывает dest.
char *strchr(const char *str, int c)
Ищет первое происхождение символа c (an unsigned char) в строке на которую указывает аргумент str.
StringFunctionsExample.cpp
#include <stdio.h>

// Using string library.
#include <string.h>

int main() {

   // Declare a string literal.
   char s1[] = "This is ";

   // Declare a C-Style string
   // (With null character at the end).
   char s2[] = { 't', 'e', 'x', 't', '\0' };

   // Function: size_t strlen(const char *str)
   // strlen funtion return length of the string.
   // site_t: is unsigned integer data type.
   size_t len1 = strlen(s1);
   size_t len2 = strlen(s2);

   printf("Length of s1 = %d \n", len1);
   printf("Length of s2 = %d \n", len2);

   // Declare an array with 100 elements.
   char mystr[100];

   // Function: char *strcpy(char *dest, const char *src)
   // copy s1 to mystr.
   strcpy(mystr, s1);

   // Function: char *strcat(char *dest, const char *src)
   // Using strcat function to concatenate two strings
   strcat(mystr, s2);

   // Print out content of mystr.
   printf("Your string = %s", mystr);

   fflush(stdout);

   return 0;

}
Результаты запуска примера:

2. C++ Style String

C++ предоставляет вам класс string, который помогает вам легко работать со строкам. Методы, которые class string предоставляет так же поддерживает для работы с C-Style string.
Объявить библиотеку string
Чтобы использовать string вам нужно объявить директивы процессора (Preprocessor Directives) #include <string> и объявить использование пространства с названием std.
// Declare Preprocessor Directives

#include <string>

// Declare to use the namespace std.

using namespace std;
Объявить string:
// Declare a string object.

string mystring = "Hello World";

// If you do not declare using namespace std.
// You must use the full name:

std::string mystring = "Hello World";
Методы String
Ниже это список методов String.