Тип змінної "string". Базові поняття

Тип зрозуміти дуже просто. Достатньо перекласти саме слово означає «рядок». Тобто, це звичайний або як ще можна висловитися

Для того щоб оголосити змінну типу потрібно вказати її тип, але також потрібно поставити (якщо використовуєте рядок то можна не використовувати).


        std::string ім’я_змінної;
        

Якщо ви хочете відразу присвоїти якесь значення такій змінній, то його варто записувати у подвійних лапках:


        std::string hi = "You're Breathtaking!";
        

Де ми маємо значення змінної

Важливо розуміти, що стрічка починається та закінчується подвійними лапками. Тому, якщо ви хочете використати їх в середині стрічки, то варто перед ними поставити символ


        std::string hi = "You\"re Breathtaking!";
        

Значення змінних типу можна змінювати Для цього потрібно вказати нове значення у подвійних лапках або ім’я іншої змінної

Якщо ви спробуєте отримати значення за допомогою то помітите, що змінна буде зберігати всю інформацію яка написана нерозривно. Тобто, програма не збереже в змінній інформацію після пробілу.

Для того щоб програма записувала всю інформацію яку ви ввели, то варто використовувати функцію Її використання виглядає так:


        std::getline(std::cin, ім’я_змінної);
        

Звісно, якщо ви використовуєте простір імен тобто маєте рядок то можна не писати.

    
            #include <iostream>
            int main()
            {
                std::string a;
                std::getline(std::cin, a);
                std::cout<<"\nvalue: " << a;

                return 0;
            }
        
    

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

Багато властивостей/функцій стрічок можна отримати за допомогою звернення через крапку Для цього вам потрібно в кінці іменні типу стрічка поставити крапку та обрати необхідну функцію. Не забувайте після обраної функції поставити круглі дужки!


        std::string ім’я_змінної;
        

        ім’я_змінної.функція();
        

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


        std::string ім’я_змінної;
        

        ім’я_змінної.length();
        

Також ви можете звертатися до елементів стрічки як до елементів масиву. Для цього необхідно після іменні змінної у квадратних дужках вказати номер елемента до якого ви хочете звернутися Пам’ятайте!!! Порядкові номера розпочинаються з а не з тому елемент буде під номером

Якщо ви будете використовувати квадратні дужки, то є шанс, що ви звернетеся до елемента якого не має, тобто до порядкового номеру якого не має. Наприклад, у вас є слово Воно складається з елементів. Букв лише але в кінці кожної стрічки є елемент який вказує на завершення стрічки. Довжина стрічки буде А ви звернетеся до елементу. Само-собою програма видасть помилку, але бувають ситуації, що програма не видає її і працює некоректно. Для того щоб завчасно уникнути таких ситуацій можна використовувати функцію Вона також надає доступ до елементу по заданому індексу але завчасно перевіряє чи є елемент з таким індексом. Щоб нею скористатися потрібно поставити крапку та вказати в круглих дужках номер елементу до якого звертаєтеся.


        Ім’я_змінної.at(номер_елементу);
        

Наприклад, ми можемо порахувати кількість пробілів в реченні:

    
            #include <iostream>
            int main()
            {
                std::string str; //змінна в яку записуємо стрічку
                std::getline(std::cin, str); //отримуємо всю стрічку

                int a = 0; //змінна яка зберігає кількість пробілів

                //цикл в якому ми будемо посимвольно проходитися по кожному елементі стрічки
                for(int i = 0; i < str.length(); i++)
                {
                    //якщо "і-ий" елемент є пробіл, то збільшуємо їх кількість
                    if(str.at(i) == ' ')
                    {
                        a++;
                    }
                }

                //демонструємо кількість пробілів
                std::cout << "amount: " << a;

                //довжина всієї стрічки (кількість символів)
                std::cout<<"\nlength: " << str.length();
                std::cout<<"\nsize: " << str.size();

                return 0;
            }
        
    

Доволі часто виникають ситуації коли потрібно об’єднати дві або більше стрічок. Для цього можна скористатися дією додавання Тоді, в кінець першої стрічки приєднається друга стрічка.

    
            std::string str = "string one. ";
            str += "string two. "; //додаємо стрічку

            std::string str2 = "string three. ";
            str +=str2; //додаємо змінну типу стрічка
        
    

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

Функція надає можливість додавати у кінець стрічки значення у вигляді стрічки та іншої змінної.

    
            std::string str = "string one. ";
            str.append("string two. "); //додаємо стрічку

            std::string str2 = "string three. ";
            str.append(str2); //додаємо змінну типу стрічка
        
    

А функція надає можливість додавати символи або змінні типу символ.

    
            std::string str = "string one. ";
            str.push_back('a'); //додаємо символ
            char b = 'b';
            str.push_back(b); //додаємо змінну типу символ
        
    

Також ви можете вставити стрічку (тобто, потрібно вказувати в подвійних лапках або використовувати змінну типу стрічка) не в кінець стрічки, а в якусь певну позицію. Для цього варто скористатися функцією до якої необхідно звертатися через крапку. В круглих дужках через кому необхідно вказати позицію в яку вставляємо стрічку (пам’ятайте, що відлік починаємо з нуля!) та значення яке хочемо вставити.

    
            #include <iostream>
            int main()
            {
                std::string str = "helo";
                str.insert(3, "L"); //додаємо стрічку
                std::cout << str << std::endl;

                std::string a = "!";
                str.insert(5, a); //додаємо змінну типу стрічка
                std::cout << str << std::endl;

                return 0;
            }
        
    

Ви можете очищати значення яке зберігає в собі стрічка. Для цього можна присвоїти змінній значення порожньої стрічки. Також, можна скористатися функцією до якої необхідно звернутися через крапку.

    
            std::string str = "string";
            str = "";       //присвоюємо змінній порожню стрічку
            str.clear();    //очищаємо/видаляємо значення стрічки за допомогою функції
        
    

Якщо вам необхідно видалити символ який знаходиться в конкретній позиції, то варто скористатися функцією де в круглих дужках ви вказуєте номер який хочете видалити. Пам’ятайте, що відлік починається з нуля!

    
            std::string str = "hello!";
            str.erase(4); //видаляємо «4» елемент, тобто символ «о»
        
    

Порівняти дві стрічки можна за допомогою операторів

Варто розуміти, що стрічки перевіряють на абсолютний збіг. Якщо букви є різного регістру то вони вважаються різними. Також, впливатиме наявність пробілів та інших символів, мова якою написані літери. Якщо ви порівняєте змінні в яких зберігається символ «а» але при цьому одне написане українською, а інше англійською, то вони будуть різними.

    
            #include <iostream>
            int main()
            {
                std::string str = "hello";
                std::string str2 = "Hello";

                if(str == str2)
                {
                    std::cout<<"str == str2\n";
                }
                else if(str != str2)
                {
                    std::cout<<"str != str2\n";
                }

                std::string ua = "а"; //"а" записана українською
                std::string en = "a"; //"а" записана англійською

                if(ua == en)
                {
                    std::cout<<"ua == en\n";
                }
                else if(ua != en)
                {
                    std::cout<<"ua != en\n";
                }

                return 0;
            }