Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
12
Добавлен:
15.03.2015
Размер:
5.82 Mб
Скачать

Лекция 7

7.1. Создание и инициализация строк

Текстовые строки реализуются в виде символьных массивов в виде char str[x].

Инициализировать массив можно посимвольно с явным указанием на нуль-символ: char str1[20]={’1’, ’2’, ’3’, ’4, ’0’, ’q’, ’w’, ’e’, ’r’, ’t’, ’\0’, }. Число 0 и символ ‘\0’ не одно и то же. Незаполненные элементы массива обнуляются.

Пример: инициализация массива.

#include <iostream>

#include <windows.h> //установка команд операционной системы

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{

CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());

return text;

}

int main()

{

char str1[20]={'1','2','3','4','0','q','w','e','r','t','\0'};

int i;

cout <<str1<<endl;

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

{

cout <<str1[i];

}

cout<<endl;

cout<<endl;

system("pause"); //приостанавливает компилятор

return 0;

}

Строка – это непрерывная последовательность неслужебных символов, поэтому при занесении строки в массив командой cin>>12340 qwert будет выводиться только 12340, т.к. символы перехода на новую строку, табуляции, пробел интерпретируются компилятором как конец строки. В этом случае выводится строка только до нуль-символа. а в остальных ячейках содержится “мусор”.

Пример: посимвольное заполнение массива оператором cin.

#include <iostream>

#include <windows.h> //установка команд операционной системы

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{

CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());

return text;

}

int main()

{

char str1[20]; int i;

cout <<Rus("Введите строку: "); cin>>str1;

cout <<str1<<endl;

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

{

cout <<str1[i];

}

cout<<endl;

cout<<endl;

system("pause"); //приостанавливает компилятор

return 0;

}

Поэтому для занесения строки в массив служебных символов (пробела) следует использовать функцию gets(), которая подключается в заголовочном файле <cstdio>. Например, командой char str[20]=”12340 qwert” создается символьный массив из 20 элементов. В первые 11 ячеек с номерами 0-10 заносится текстовая строка, в 12 ячейку автоматически заносится нуль-символ ’/0’, а в остальных ячейках содержится “мусор”.

Пример: посимвольное заполнение массива оператором gets.

#include <iostream>

#include <cstdio> //для функции gets()

#include <windows.h> //установка команд операционной системы

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{

CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());

return text;

}

int main(){

char str1[20]; int i;

cout <<Rus("Введите строку: "); gets(str1);

char *b; //объявляем указатель на символ

b = &str1[0]; //b указывает на 0-ой символ

cout<<b<<endl; //выводим строку

system("pause"); //приостанавливает компилятор

return 0;

}