русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Строки

В С++ используются два вида строк: а) строка как массив символов типа char; б) строка как объект класса string. В этом семестре мы остановимся на изучении строк как массива элементов типа char. По сравнению со string он более примитивен и легко понимается.

Итак, строка представляет собой массив символов, заканчивающийся нуль-символом (нулевым символом). Нуль-символ – это символ с кодом в ASCII, равным 0, что записывается в виде управляющей последовательности '\0'. По положению нуль-символа определяется фактическая длина строки. Как и другие типы данных, строки могут быть переменными и константными.

Строку можно инициализировать следующим образом: char str[10] = "Vasia";. В этом примере под строку выделяется 10 байт (1 символ – 1 байт), 5 из которых занято под символы строки, а шестой – под нуль-символ:

'V' 'a' 's' 'i' 'a' '\0'        

Если строка при определении инициализируется, её размерность можно опускать (компилятор сам выделит соответствующее количество байт):

char str[ ] = "Vasia"; // выделено и заполнено 6 байт

Рассмотрим элементарную программу, осуществляющую ввод и вывод строки:

int main() {

const int MAX = 10; // максимальный размер строки

char str[MAX]; // сама строка

cout << "Vvedite stroku: "; // ввод строки

cin >> str;

cout << "Vy vveli: " << str << endl; // показ результата

getch(); return 0;

}

Данная программа отражает принцип описания строк и имеет ряд недостатков. Во-первых, может произойти ошибка из-за того, что пользователь введёт строку, которая окажется длиннее, чем массив, используемый для её хранения. Необходимо помнить, что в С++ нет встроенного механизма, защищающего программу от помещения элементов за пределы массива. Однако существует масса возможностей ограничить количество символов, помещаемых в массив. Во-вторых, если в данной программе ввести строку, содержащую более одного слова, то программа выведет только первое слово. Это вызвано тем, что операция >> считает пробел нулевым символом, и всё напечатанное после пробела отбрасывается. Приведём пример, исправляющий указанные недостатки:

int main() {

const int MAX = 10; // максимальный размер строки

char str[MAX]; // сама строка

cout << "Vvedite stroku: "; // ввод строки

cin.get(str, MAX);

cout << "Vy vveli: " << str << endl; // показ результата

getch(); return 0;

}

В данной версии программы, для считывания строк, содержащих пробелы, мы применили метод cin.get(str, MAX); . Здесь, первый аргумент определяет адрес массива, куда будет помещена введённая строка, а второй аргумент определяет максимальный размер массива, автоматически предупреждая, таким образом, его переполнение. Существует ещё метод cin.getline(), который работает аналогично cin.get(), но не оставляет в потоке символ перевода строки '\n', вместо которого записывается завершающий 0.

Метод cin.get(); может иметь третий аргумент, позволяющий решать проблему считывания нескольких строк. Этот аргумент определяет символ, на котором метод завершает считывание строки. Пример:

int main() {

const int MAX = 200; // максимальный размер строки

char str[MAX]; // сама строка

cout << "Vvedite Vashe polnoe imya i adres v neskolko strok: "; // ввод строки

cin.get(str, MAX, '$');

cout << "Vy vveli: " << str << endl; // показ результата

getch(); return 0;

}

Здесь, метод cin.get(str, MAX, '$'); обеспечивает принятие символов до тех пор, пока вы не введёте завершающий символ (или до тех пор, пока вводимые данные не превысят размер массива). Результат работы программы:

Vvedite Vashe polnoe imya i adres v neskolko strok: Ivanov

Ivan Petrovich

g. Moskva, ul. Sadovaja, 10

$

Vy vveli: Ivanov

Ivan Petrovich

g. Moskva, ul. Sadovaja, 10

Просмотров: 473


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.