- •Основные понятия
- •Определение С-строк
- •строка как массив символов
- •строка как указатель на char
- •особенности работы с С-строками в С++
- •Операции со строками
- •Инициализация строки
- •Возможные ошибки при работе со строками
- •Ввод-вывод строк
- •преобразование значения базового типа в С-строку
- •ввод ограниченного числа символов строки
- •функция вывода строки
- •особенности посимвольного вывода строки
- •Копирование строк
- •Оптимизация текста программы на примере функции копирования
- •Функции для работы с С-строками
- •Определение длины строки
- •Копирование строк
- •Объединение строк
- •Сравнение строк
- •Поиск символа в строке
- •Проверка принадлежности символа некоторому множеству
- •Поиск строки в строке
- •Преобразование и заполнение строк
- •преобразование строки в число
- •преобразование строчных символов строки в прописные и наоборот
- •реверс строки
- •заполнение строки символом
- •пример применения функций преобразования
- •Выделение лексем
- •Динамические строки
- •Копирование строки в динамическую строку
- •Передача строки в функцию в качестве параметра
- •Пример_1: в main()– строка-массив; в функции – строка-указатель
- •Пример_2: в main() – строка-указатель; в функции – строка-указатель
- •Передача в функцию массива строк
- •Примеры работы со строками
- •Определение длины строки с помощью функции пользователя
- •Реверс строки (перегрузка функций)
- •Удаление начальных пробелов из строки
- •Проверка, является ли строка целым числом
- •Проверка, является ли строка 16-ичным целым числом
- •Проверка, является ли строка дробным числом без знака
- •Перевод двоичного числа в десятичное
- •Перевод шестнадцатеричного числа в десятичное
- •Перевод десятичного числа в двоичное
- •Перевод десятичного числа в с/с от 2-х до 10
- •Перевод десятичного числа в шестнадцатеричное
- •Определение количества слов в фразе
- •Выделение слов в тексте по нажатию произвольной клавиши
- •Сортировка вводимых с клавиатуры строк *
- •Сортировка строк в зависимости от признака, передаваемого функции main() через аргумент argv *
- •Инвертирование строки с помощью рекурсивной функции
const int n = 80;
char s[n];
while (cin.getline(s, n)) { //ввод строки в s, выход из цикла – ctrl+z – признак конца файла
cout << s << endl; |
//вывод строки |
//………. |
обработка строки |
} |
|
_getch(); |
|
return 0; |
|
} |
|
преобразование значения базового типа в С-строку
Функция С sprintf() аналогична printf(), однако выводит данные в строку-
буфер. |
|
char buf[20]; |
|
int i=22222; |
//вывод переменной i типа int в строку-буфер buf, |
sprintf_s(buf, "%7d", i); |
|
cout << buf<< endl; |
//длина которой равна 7: ” 22222” |
sprintf_s(buf, "%5d", i); |
//вывод переменной i типа int в строку-буфер buf, |
cout << buf<< endl; |
// длина которой равна 5: ”22222” |
char c='a';
sprintf_s(buf, "%7c", c); //вывод переменной c типа char в строку-буфер buf, cout << buf<< endl; // длина которой равна 7: ” a”
sprintf_s(buf, "%c", c); //вывод переменной c типа char в строку-буфер buf, cout << buf<< endl; // длина которой равна 1: ”a”
double d=1.23;
sprintf_s(buf, "%5f", d); //вывод переменной d типа double, длина которой
cout << buf<< endl; |
// равна 8: ”1.230000”, в строку-буфер buf |
||||
sprintf_s(buf, "%9f", d); //вывод переменной d типа double (длина 8)в строку-буфер |
|||||
cout |
<< |
buf<< |
endl; |
// buf длины 9:” 1.230000” |
|
sprintf_s(buf, "%11f", d); //вывод переменной d типа double в строку-буфер buf |
|||||
cout |
<< |
buf<< |
endl; |
// длины 11: ” |
1.230000” |
ввод ограниченного числа символов строки
#include <iomanip> int main()
{
const int MAX = 10; char str[MAX];
cout << "\nEnter a string: ";
cin >> setw(MAX) >> str; //ввод в строку не более MAX-1 символов // один символ отводится на 0-символ
cout << "You entered: " << str << endl; _getch();
return 0;
}
Результат работы:
Enter a string: 123456789012 You entered: 123456789
или
scanf (“%ks”, name); где k – количество символов строки, которое необходимо ввести.
функция вывода строки
void dispstr (char*); //прототип функции вывода строки
Программирование – лекция 13 (лекции Стрикелевой Л.В.) |
10 |
|