Строки
Объявление, инициализация и присваивание строк
Операции
Операции
Функции (не все)
Получение характеристик строк
Пример
Пример
Пример
197.00K
Категория: ПрограммированиеПрограммирование

Строки. Строки типа string

1. Строки

Строки типа string защищены от выхода
информации за их границы.
C ними можно работать так же, как с
любым встроенным типом данных.
Для использования класса необходимо
подключить к программе заголовочный
файл <string>.
string s; // символьная строка
заголовочный файл для строк старого стиля —
<string.h>.
©Павловская Т.А. (СПбГУ ИТМО)

2. Объявление, инициализация и присваивание строк

string s1;
string s2(“Вася”);
string s3(s2);
s1 = ‘X’;
s1 = “Вася”;
s2 = s3;

3. Операции

= присваивание
+ конкатенация
== равенство
!= неравенство
< меньше
<= меньше или
равно
>
>=
[]
<<
>>
+=
больше
больше или равно
индексация
вывод
ввод
добавление
Для строк типа string не соблюдается
соответствие между адресом первого элемента
строки и именем.
Кроме операции индексации, для доступа к
элементу строки определена функция at:
string s(“Вася”);
cout << s.at(1);

4. Операции

вывод экран
cout << s;
ввод с клавиатуры
cin >> s; // только до пробела
getline ( cin, s ); // до Enter
конкатенация +
string s,s1,s2;
s1 = "Привет"; s2 = "Вася";
s = s1 + ", " + s2 + "!";//“Привет, Вася!”

5. Функции (не все)

Поиск подстроки
size_type find(const string& str, size_type pos = 0) const;
Вернёт найденную позицию с начала строки, -1, если не нашли
string s = "Здесь был Вася.";
int n;
n = s.find ( 'с' ); // 3
n = s.find ( "Вася" ); // 10
Добавление части одной строки к другой:
append(const string& str);
append(const string& str, size_type pos, size_type n);
s = "012345"; s2= ”000000”;
s.append(s2);//”012345000000”;
s.append(s2,0,3);//”012345000”;

6.

Вставка в одну строку части другой строки:
insert(size_type pos1, const string& str);
insert(size_type pos, const char* s, size_type n);
s = "0123456789"; s2= ”000”;
s.insert(4, s2);//”0123000456789”
s.insert( 3,"ABC" ); // "012ABC3456789”
Удаление части строки:
erase(size_type pos = 0, size_type n = npos);
s = "0123456789";
s.erase ( 3, 6 ); // "0129"
самое большое
положительное число
типа size_type

7.

Выделение части строки :
string substr(size_type pos = 0, size_type n = npos) const;
s = "0123456789";
s1 = s.substr( 3, 5 );
// "34567"
Преобразование string в строки старого стиля:
const char* c_str() const;
s.c_str()
Преобразования «строка» – «число»
string s = "123";
int N;
N = atoi ( s.c_str() );
// N = 123
s = "123.456";
float X;
X = atof ( s.c_str() );
// X = 123.456

8. Получение характеристик строк

size() // Количество элементов строки
length() // Количество элементов строки
max_size() // Максимальная длина строки
capacity() // Объем памяти, занимаемый строкой
empty() // Истина, если строка пустая

9. Пример

#include <string>
#include <iostream>
using namespace std;
int main (){
string s1("прекрасная королева"), s2("ле"),
s3("корова");
cout << "s3= " << s3.insert(4, s2) << endl;
cout << "s3= " << s3.insert(7, "к") << endl;
s1.erase(0,3);
cout << "s1= " << s1.erase(12,2) << endl;
cout << "s1= " << s1.replace(0,3, s3, 4,2) <<
endl;
}
s3= королева
s3= королевка
s1= красная корова
s1= лесная корова
©ρŧą

10. Пример

#include <iostream>
#include <string>
using namespace std;
main()
{ string s;
int i;
cout << "Введите строку: ";
getline ( cin, s );
for ( i = 0; i < s.size(); i++ )
if ( s[i] == 'а' )
s[i] = 'б';
cout << s;
}
Мама мыла раму
Мбмб мылб рбму
©ρŧą

11. Пример

char GetColumn() {
string goodChar = "ABCDEFGH";
char symb;
cout << "Введите обозначение колонки: ";
while (1) {
cin >> symb;
if (-1 == goodChar.find(symb)) {
cout << "Ошибка. Введите корректный
символ:\n";
continue;
}
return symb;
}
}
English     Русский Правила