? Символы и строки

Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
Edward V Berard.

Здесь вы можете скачать парочку интересных андроид приложений

Символы и строки

Символьная константа- это один символ, заключенный в апострофы. Его типом является тип char. Объявить символ можно так:

const char my_symbol='a';

Строковая константа- это последовательность символов, заключенная в кавычки. Объявляем ее так:

const char str[5] ="abcd";

Вы можете задать вопрос:"Почему размер массива символов задан равным пяти, а букв в строке мы написали четыре?". Дело все в том, что строковая константа всегда имеет на 1 символ больше, чем используется при записи, она ВСЕГДА заканчивается символом конца строки '\0', или, как его еще называют, ноль символом. Он никак не отображается при выводе строки на экран или в файл.

Соглашение об указателях char*

Сообщество программистов C и C++ договорились считать тип char* формой строкового типа. Соглашение заключается в том, что строки заканчиваются символом '\0', и только для таких строк можно использовать функции библиотеки <cstring>. Язык C++ частично поддерживает тип char*, устанавливая, что строковая константа заканчивается ноль символом.

Существует важное отличие char* от char[]. Если вы объявили, например, строку char str1[5]; , то в дальнейшем вы не сможете написать str1="abcd"; , компилятор просто выдаст ошибку. Если же вы объявили строку char* str1; , то вы со спокойной совестью можете дальше написать str1="The solar system";. Причем размер массива символов во втором случае может быть любым, он определится автоматически.

char str1[5];
str1="abcd";              //НЕЛЬЗЯ
char* str1;
str1="The solar system"   //Можно

Если вы все же хотите объявит строку первым способом, то нужно сразу ее заинициализировать:

char str[5] ="abcd";

Ввод строк с клавиатуры

Чтобы ввести строку с клавиатуры, использовать поток cin, который мы всегда используем для ввода чисел или символов, нельзя. Дело в том, что поток cin прекращает ввод строки после ввода пробела. К тому же cin может продолжать ввод элементов за пределами массива, если под строку отводится меньше места, чем вводится символов.

Вместо потока cin нужно использовать функцию getline. Она позволяет вводить заданное количество символов, включаю пробелы. Эта функция останавливает ввод, когда достигает числового предела или, когда читает символ новой строки (Enter).

Длина вводимой строки может быть меньше заданного количества символов. В общем виде обращение к функции записывается так:

имя входного потока.getline(строковая переменная, максимальное число символов+1);
Рассмотрим пример:
#include <iostream>
using namespace std;  
void main()
{setlocale(LC_ALL,"Russian");
 char str[40];                          //Объявили строку длиной 40 символов
 cout<<"\n Введите строку: ";
 cin.getline(str, 40);                  //Вводим с клавиатуры нашу строку
 cout<<"\n Введенная строка= "<< str;   //Выводим для проверки строку на монитор
 cout<< endl;
}

Примечание:

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

На главную
C++ новичку     Алфавит и лексемы     Операции в C++     Библиотеки     Потоки ввода- вывода     Разветвляющийся вычислительный процесс
     Циклы    Указатели     Основы работы с динамической памятью     Работа с файлами     Некоторые типичные функции

Разработчик сайта: Филатов Максим

Hosted by uCoz