Обработка строк, представляющих собой символьные массивы, выполняется функциями, прототипы которых находятся в системном заголовке <cstring>
.
Этот заголовок подключается к программе следующим образом:
#include <cstring>
В стандартное пространство имен в Visual C++.NET 2003 входят следующие функции (всего 21 имя) для обработки обычных символьных массивов (см. табл. 47 в [1]):
namespace std {
using usi ng using using using using using using using using using using
:memchr; rmemcpy; :memset; :size_t; : strcat; : strcmp; :strcpy; : strlen; : strncmp; :strpbrk; : strspn; istrtok;
using using
usi ng using using using using using usi ng using
:memcmp; rmemmove;
II
: strchr; istrcoll; :strcspn; : strncat; : strncpy; : strrchr; :strstr; :strxfrm;
//имя типа, а не функции
}
Имена функций (тоже 21 имя) для обработки широких символьных массивов, входящие в стандартное пространство имен (см. табл. 48 в [1]), определены в заголовке <cwchar>:
namespace using using using using using using using using using using using
}
std { :wcscat; :wcscmp; :wcscpy; :wcslen; :wcsncmp; :wcspbrk; :wcsspn; :wcstok; :wmemchr; :wmemcpy; :wmemset;
using using using using using using using using using using
iwcschr; :wcscoll; :wcscspn; :wcsncat; :wcsncpy; :wcsrchr; :wcsstr; :wcsxfrm; rwmemcmp; :wmemmove;
ПРИМЕЧАНИЕ
В разных интегрированных средах, несмотря на наличие стандартов С и С++, реализуется много нестандартных функций для работы со строками. В системе Visual C++.NET 2003 такие функции всегда начинаются с символа подчеркивания. В системе Borland С++ Builder 6 имена многих функций, не регламентированных стандартом С, никак не выделены.
Если вы написали программу, тогда ее следует качественно протестировать на юзабилити тут http://qawebmart.ru.
Контрольные вопросы
1. Что такое «поток»? Дайте определение.
2. Как классифицируются потоки, реализованные в библиотеках ввода-вывода С++?
3. Что такое буферизация и зачем она нужна?
4. Какие библиотеки ввода-вывода реализованы в С++ и чем они различаются?
5. Перечислите стандартные потоки и объясните их назначение.
6. Зачем нужен процесс форматирования и когда он выполняется?
7. Каковы особенности ввода строк?
8. Каким образом ограничить набор вводимых символов при вводе?
9. Объясните, для чего нужны строковые потоки. Почему строковые потоки — всегда форматируемые?
10. Можно ли использовать тип string (и каким образом) со строковыми потоками?
11. Объясните, в чем различие между текстовым и двоичным файлами.
12. Объясните, что означает «открыть» файл и «закрыть» файл?
13. Каким образом внешний файл связывается с потоком?
14. Можно ли один и тот же поток связать с разными файлами? А один и тот же файл — с разными потоками?
15. В каких случаях необходимо следить за ситуацией конца файла? Каким способом это делается?
16. Можно ли текстовый файл открыть как двоичный? А двоичный — как текстовый?
17. Какие операции и методы ввода-вывода требуются для обмена с текстовыми файлами?
18. Перечислите методы ввода-вывода для работы с двоичными файлами.
19. Объясните, что означает «перенаправление» потока? Какие потоки можно перенаправлять и куда?
20. В чем преимущества объектно-ориентированной библиотеки ввода-вывода по сравнению с процедурной?
Упражнения
43. Чем стандартные широкие потоки отличаются от узких?
44. Что такое «локальный контекст», и каково его назначение?
45. Как установить русскоязычный шрифт при выводе в консольное окно?
46. Чем отличается ввод-вывод широких файловых потоков от узких? |