Другое

String в языке С: определение, типы, методы и использование

Lorem ipsum dolor

Самым первым выражением, которое пишет программист, изучая программирование, является всем известное «Hello, world!». Выражения такого рода во многих языках программирования относятся к типу данных «string», в С в том числе. Однако у большинства языков программирования «string» является встроенным в структуру языка типом. В С «string» не встроен в структуру, он является частью стандартной библиотеки. Чтобы пользоваться «строками» в С, сначала необходимо подключить заголовочный файл. Делается это путем добавления двух строчек в начало файла:

  • #include <iostream>

  • #include <string>

     

String в С — что это?

String в С — это определенный тип данных, который, по сути, является последовательностью различных символов, заключенных в «кавычки». Такой тип данных используется для написания каких-либо текстовых сообщений: имя, адрес, слова, предложения и др.

После подключения заголовочного файла со «строками» в С можно работать как с обычными переменными. Например, их можно объявлять и присваивать им значения:

std:: string auto(“AUDI“); //создаем переменную «auto» и присваиваем ей строковое значение «AUDI»

name = “VAZ“; //присваиваем переменной «auto» строковое значение «VAZ»

 

String в С может принимать любые символы, даже числа. Но если вписать в «строку» число, то оно останется строкой и выполнять с ним арифметические действия не получится. С не преобразует число, записанное в «string», в целочисленный тип данных, чтобы с ним можно было взаимодействовать как с числом.

Работа со string в Си

Строки можно выводить при помощи «cout» или «cin». Например, как работает «cout»:

int main()

{

std::string name(“Владимир“);

std::count < < “Меня зовут“ < < name;

return 0;

}

 

В результате выполнения программы мы получим: «Меня зовут Владимир».

Как работает «cin»:

int main()

{

 std::cout < < “Введите ваше полное имя: “;

std::string myName;

std::cin > > myName

 

std::cout < < “Введите ваш возраст: “;

std::string myAge;

std::cin > > myAge;

 

std::cout « “ Ваше имя “ < < myName < < “ и ваш возраст “ < < myAge;

}

Результатом работы такой программы будет:

Введите ваше полное имя: «Владимир Мономах»

Введите ваш возраст: Ваше имя Владимир и ваш возраст Мономах

Вышло как-то не очень. Почему так? Оператор «>>» и «сin» работают немного по-другому. Оператор «>>» извлекает символы из входного потока, только до первого пробела, а остальные данные хранятся в «cin», пока не будут еще раз извлечены. Мы хотели извлечь полное имя в переменную «myName» при помощи оператора «>>», однако вместо всего имени «Владимир Мономах» мы получили только «Владимир», а вторым извлечением получили «Мономах». Если бы у нас было третье извлечение, тогда у нас был бы извлечен возраст, допустим, «30». Из этой ситуации есть выход.

Если необходимо извлекать все данные из входного потока, включая пробелы, тогда необходимо использовать функцию «std::getline()», которая несет в себе 2 аргумента: «std::cin» и «string». Вот как это выглядит:

int main()

{

 std::cout < < “Введите ваше полное имя: “;

std::string myName;

std::getline(std::cin, myName);

 

std::cout < < “Введите ваш возраст: “;

std::string myAge;

std::getline(std::cin, myAge);

 

std::cout « “ Ваше имя “ < < myName < < “ и ваш возраст “ < < myAge;

}

 

Результатом такой программы будет:

Введите ваше имя: Владимир Мономах

Введите ваш возраст: 30

Ваше имя Владимир Мономах и ваш возраст 30

При такой реализации все будет работать как надо.

С вводом и выводом string в Си мы разобрались, но со строками можно выполнять и другие манипуляции.

 

String в Си — это не только текст

Со string в Си можно выполнять арифметические операции. Например, можно применить оператор «+», чтобы объединить 2 строки, или оператор «+=», чтобы добавить одну строку к другой.

Мы уже писали, что если ввести в string числа, то они не будут работать как числа. Например:

int main()

{

std::string a(“22“);

std::string b(“11“);

 

std::cont << a + b << “\n“; // происходит объединение строк a и b

a += “ кошки“;

std::cout << a;

return 0;

}

 

Результат программы будет такой:

2211

22 кошки

Оператор «+» не сложил два числа 22 и 11, а объединил две строки «22» и «11». Помимо этих операций со строками, можно проводить:

  • посимвольное сравнение при помощи операторов «==» или «!=»;

  • лексикографическое сравнение при помощи операторов «<», «>», «<=», «>=».

     

String в Си: методы

У string в Си есть несколько методов, которые можно применять при работе со строками, например:

  1. Функция «size()». При помощи этой функции можно узнать длину строки. 

  2. Функция «resize(n)». При помощи этой функции можно изменить длину строки, которая станет равняться «n».

  3. Функция «clear()». Данная функция полностью очищает строку и делает ее пустой.

  4. Функция «empty()». При помощи этой функции можно проверить string является она пустой или нет.

  5. Функция «push_back(c)». При помощи этой функции в конец строки добавляется символ «с».

  6. Функция «append()». Эта функция способна добавить в конец строки не просто символ, а другую строку или фрагмент строки.

  7. Функция «erase(pos, cont)». При помощи этой функции можно удалить символы, начиная с индекса, указанного в «pos». «Cont» используется, чтобы обозначить количество символов, которые нужно удалить; если не указать этот аргумент, тогда удалятся все символы до конца строки.

  8. Функция «substr(pos, cont)». При помощи этой функции можно извлечь подстроку из строки, начиная с индекса, указанного в «pos». «Сont» необходимо указать, если нужно извлечь определенное количество символов.

  9. Функция «replace(pos, cont)». Эта функция заменяет строку, кусочек строки или отдельный символ в строке на необходимое значение.

  10.  Функция «find(str, pos)». При помощи этой функции можно искать вхождение одной строки в другую. Функция возвращает индекс первого символа в строке, где найдено вхождение.

     

Заключение

String в Си хоть и не являются встроенным типом данных, но очень многофункциональны и часто применяются в программировании. Поэтому при изучении Си или С++ обязательно нужно понимать, как можно взаимодействовать со строками или другими типами данных, — это является основой программирования на любом языке.

Схожие статьи

Git для профессионального программиста 2016: скачать или читать книгу онлайн
Другое

Git для профессионального программиста 2016: скачать или читать книгу онлайн

Нейронные сети в играх: как и, главное, зачем они используются?
Другое

Нейронные сети в играх: как и, главное, зачем они используются?

Программа распознавания лиц: специфика технологии, сервисы и примеры
Другое

Программа распознавания лиц: специфика технологии, сервисы и примеры

Что такое многопоточное программирование: обработка, структура и примеры
Другое

Что такое многопоточное программирование: обработка, структура и примеры

×