Вы находитесь на странице: 1из 16

Строки в языке С++

string
Строки на языке С++

В C++ тип данных, который позволяет работать со


строковыми величинами описываются типом string
Строка состоит из набора последовательно расположенных
символов и используется для хранения текста. Строки
могут иметь произвольную длину. Строка, в которой нет ни
одного символа, называется пустой
К символам в строке можно обращаться, используя индекс.
Нумерация символов начинается с нуля, s[i] соответствует
i-му символу в строке s.
Строки на языке С++

Библиотека

#include <string>

Объявление

string s1, s2;

Ввод

cin>>s1; //до пробела


getline(cin, st); //с пробелами
Имя потока Имя переменной, в
для ввода которую будет
данных записана строка
Строки на языке С++

Для строк:
• при работе со строками автоматически проходит
проверка переполнения строки и увеличение ее
размера при необходимости
• определен оператор присваивания (=)
• определен оператор конкатенации (+)
• сравнение посимвольно (лексикографически)
Строки на языке С++
Присваивание значения
S = "Hello, ";

Использование конкатенации
S = s1 + s2;
В результате сложения двух строк получается новая строка, в которой после
Вывод символов первой строки будут записаны символы второй строки

cout << S << endl;

Использование сравнения
if (s1 > s2)…
Строки на языке С++

Конкатенация строк
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
  string s1 = "Pasha";
  string s2 = "Ivanov";
  string s3 = s1 + " " + s2;
  string s4 = s2 + " " + s1;
  cout << "s3 - " << s3 << endl;
  cout << "s4 - " << s4 << endl;
  return 0;
}
Строки на языке С++

Сравнение строк
• Сначала сравниваются первые символы двух строк
Если символы различны, то больше та строка,
символ которой имеет больший номер. Если символы
одинаковые, то переходят к сравнению следующих
символов. Сравнение заканчивается, когда найдены
различные символы или в одной из строк
закончились символы. В этом случае больше та
строка, в которой символы остались. Если при
сравнении символов различия не найдены и строки
закончились одновременно, то они равны.
Строки на языке С++

Сравнение строк s1 s2 Результат


"string" "char" s1 > s2
"строка" "Строка" s1 > s2
"book" "Magazine" s1 > s2
"book" "magazine" s1 < s2
"липа" "лист" s1 < s2
"леска" "лес" s1 > s2
"112" "7" s1 < s2
"123" "11111111" s1 > s2
"123" "123" s1 = s2
Действия со строками С++

вычисление длины строки

n = S.length();
n = S.size();

выделение подстроки из k символов,


начиная с позиции n
string q = S.substr(n, k);

обмен строк
S.swap(s1);
Действия со строками С++

поиск вхождения слева

S.find(s1); //строки s1
S.find(c); //символа с
поиск вхождения справа
S.rfind(s1); //строки s1
S.rfind(c); //символа с

Если значение не найдено возвращает -1 или


(что тоже самое) string::npos
Строки на языке С++

Примеры
string s ="informatics";
n=11
int n = s.length();

 string s ="Не слово хозяин хозяину,  n=46
            а хозяин слову хозяин"; p1=9
 string s1 = "хозяин"; p2=40
 int n = s.length(); p3=16
 int p1 = s.find(s1);  
 int p2 = s.rfind(s1);
 int p3 = s.find(s1, 14);
Действия со строками С++

Находит первый символ строки, равный одному из


символов в переданной последовательности символов

s.find_first_of(string q);

Находит первый символ, не равный ни одному символу


из переданной последовательности символов

s.find_first_not_of(string q);

Аналогично для последнего символа


s.find_last_of(string q);
s.find_last_not_of(string q);
Действия со строками С++

Находит первый символ строки, равный одному из символов


в переданной последовательности символов. Поиск
начинается с позиции pos, т.е. найденный символ не может
находиться в позиции, предшествующей pos.

s.find_first_of(string q, int pos);

Аналогично для всех поисковых функций, можно начинать


с позиции pos
Строки С++
Подсказка имен функций

using namespace std::__cxx11;


Строки С++

Для использования Unicode:

подключить библиотеку

#include <windows.h>

в теле программы записать

SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Строки С++
Для использования Unicode
в консольном окне нажать кнопку

выбрать Свойства

в окне Свойства во вкладке


Шрифт выбрать
Lucinda Console и нажать OK

Вам также может понравиться