Информатика: Методические указания к лабораторным работам № 1-5. Функции. Обработка символьных данных. Организация работы с файлами, страница 20

Функция

Описание

s.append(str, start, num)*

s.append(C-cтрока, start, num)*

Добавляет в конец строки snum символов из строки str, начиная с индекса start

Добавляет в конец строки s первые num символов из С-строки, начиная с индекса start

s.assign(str, start, num)*

s.assign(C-строка, num)

Присваивает строке snum символов из строки str, начиная с индекса start

Присваивает строке s первые num символов С-строки (строки с завершающим нулем)

s.compare(start,num,str)*

Сравнивает со строкой snum символов строки str, начиная с индекса start.

s.c_str()

Преобразует строку s в С-строку

Окончание табл. 1

Функция

Описание

s.erase(start, num)*

Удаляет num символов из строки s, начиная с индекса start

s.find(str,start)*

s.find(sim, start)*

s.find_first_of(str,start)*

Ищет первое вхождение строки str в строку s, начиная с индекса start

Ищет первое вхождение символа sim в строку s, начиная с индекса start

Ищет первое вхождение любого символа строки str в строку s, начиная с индекса start

s.insert(start,str)

s.insert(start,str,start1, num)

Вставляет в строку s, начиная с индекса start, строку str

Вставляет в строку s, начиная с индекса start, num символов строки str, начиная с индекса start1

s.length()

Возвращает длину строки

s.push_back(sim)

Добавляет символ sim в конец строки s

s.replace(start,num,str)

s.replace(start,orgNum,str,

repStart, repNum,)

Заменяет num символов строки s, начиная с индекса start, строкой str

Заменяет orgNum символов в строке s, начиная с индекса start, repNum символами строки str, начиная с индекса repStart

s.substr(start, num)*

Возвращает num символов строки s, начиная с индекса start

s.swap(str)

Меняет местами содержимое строк s и str

* По умолчанию start= 0,num – все символы строки str

Так как строки string являются обычными контейнерами STL, то они могут работать и с итераторами так же, как и рассмотренные ранее в работе № 2 контейнеры vector.

Методические указания к решению задач

1.  Для решения задач вариантов 12–15 необходимо с помощью функции c_str (табл. 2.1) преобразовать string-строку в С-строку и далее использовать табл. 2.

Таблица 2

функции проверки и преобразования символов языка

Функция

Описание

isdigit(intc)

Возвращает значение не нуль, если с – цифра (0…9), и нуль в противном случае

isspace(int c)

Возвращает значение не нуль, если с – обобщенный пробел: символ пробела, символ табуляции, символ конца абзаца и другие, и нуль в противном случае

isalpha(int c)

Возвращаетзначение не нуль, если с – код буквы (AZ, a….z), и нуль в противном случае

isalnum(int c)

Возвращает значение не нуль, если с – код буквы или циф-ры (AZ, a….z, 0…9), и нуль в противном случае

Пример 8

Дана строка из цифр и букв латинского алфавита. Вывести число четных и нечетных цифр.

#include <iostream>

#include <string>

using namespace std;

void main()

{

            setlocale(LC_ALL,"rus_rus.1251");

            int i,n,chet=0,nechet=0,m;

string s;

cout<<"Введите строку, состоящую из цифр и букв латинского алфавита\n";

cin>>s;

// Количество символов в строке

n =s.size();

cout<<"Количество символов в строке:"<<n<<endl;

for(i=0;i<n;i++)

{

m= s.c_str()[i];// Преобразует строку s в С-строку

// и возвращает код символа С-строки

if(m%2==0&&isdigit(m)!=0)chet++; // Если символ –

// цифра с четным кодом

if(m%2!=0&&isdigit(m)!=0) nechet++; // Если символ –

// цифра с нечетным кодом

}