# Строки string

## Основы работы

Для работы со строками необходимо подключить библиотеку.

```cpp
    #include <string>
```

Создание строки и считывание её содержимого из консоли.

```cpp
    cout << "Input string:" << endl;
    string s  = "";
    cin >> s;
```

Вывод значения считанной строки на экран.

```cpp
    cout << "Your string: " << s << endl;
```

Получение длины строки.

```cpp
    int n = s.length();
    cout << "Length of string: " << n << endl;
```

Сравнение содержимого строк.

```cpp
    string ss = "hello";
    if(s == ss){
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
```

Получение символа строки под определённым номером.

```cpp
    cout << "Input number of char in string:" << endl;
    int number = 0;
    cin >> number;
    char c = s[number];
    cout << "Char: " << c << endl;
```

Замена символов строки под определёнными номерами.

```cpp
    s[0] = 'X';
    s[1] = 'Y';
    cout << "Changed string:" << s << endl;
```

Присвоение значений строкам и сложение строк друг с другом.

```cpp
    string s1 = "aaa";
    string s2 = "bbb";
    string s3 = s1 + s2;
    cout << "String s3: " << s3 << endl;
```

## Перевод из строки в число и наоборот

Для выполнения преобразования типов необходимо подключить дополнительные библиотеки.

```cpp
#include <string.h>
#include <cstdlib>
```

Перевод из строки в целое число.

```cpp
    string s = "-25";
    int n = atoi(s.c_str());
    cout << n;
```

Перевод из строки в вещественное число.

```cpp
    string s = "35.567";
    double d = atof(s.c_str());
    cout << d;
```

Для перевода из целых и вещественных чисел в строки необходимо подключить библиотеку.

```cpp
#include <sstream>
```

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

```cpp
template <typename tip>
string myFuncToString(tip x){
    ostringstream oss;
    oss << x;
    return oss.str();
}
```

Вызываем написанную функцию для преобразования целого числа в строку.

```cpp
    int n = 38;
    string s1 = myFuncToString(n);
    cout << s1 << endl;
```

Вызываем функцию для преобразования вещественного числа в строку.

```cpp
    double d = 55.678;
    string s2 = myFuncToString(d);
    cout << s2 << endl;
```

## Перевод строк из старого формата в новый и наоборот

Создадим строку старого формата.

```cpp
    char s[50];
    strcpy(s,"hello world");
```

Переведём её в строку нового формата.

```cpp
    string sss = string(s);
```

Пример перевода строк из нового стандарта в старый.

```cpp
  string sss = "I am Maxim";

  char q[40];
  strcpy(q, sss.c_str());
  cout << q;
```
