Часть IV. Новые возможности C++
566
Рис. 21.6. Результаты работы проекта Welcome
«
Если вы внимательно изучили описания конструкторов из Справочника по библиотеке классов, то, наверное, предвидели полученный результат. Определяя emptyString, мы вызвали конструктор string о, который создает строку нулевой длины (обратите внимание на функцию-член строкового класса length (), которая по сути эквивалентна функции strlen из ANSI С). В определении nullTerminatedString использовался КОНСТруктор string (const char*). Строка fromCharacterToCharacterString иллюстрирует КОНСТруктор string (const string &s, size_t start, size_t n), который позволяет создать экземпляр строки в виде части другой строки (если последний аргумент этого конструктора опущен, то создаваемая строка будет начинаться с первого заданного символа и заканчиваться последним символом входной строки). Таким образом, если произвести следующие изменения:
string fromCharacterToCharacterString(nullTerminatedString, 6) ;
то на экран будет выведено:
пожаловать в обитель конструкторов! Заметьте, ЧТО СТОЛЬ же ПрОСТО строку fromCharacterToCharacterString МОЖНО
создать и следующим образом:
string fromCharacterToCharacterString("Добро пожаловать в обитель конструкторов!". О, 5); '
Это пример того самого "тупого" интерфейса, о котором шла речь выше: здесь вместо передаваемого конструктору экземпляра строки nullTerminatedString (в Welcome.срр) просто подставляется аргумент типа
const char*.