#include #include
#include
int main ()
{
using namespace std;
8
|
cout
|
«
|
"Please enter a string for case-convertion:" << endl;
|
9
|
cout
|
<<
|
"> ";
|
:о
string strlnput;
getline (cin, strlnput);
cout « endl;
14
transform(strlnput.begin(),strlnput.end(),strlnput.begin(),\
toupper);
cout « "The string converted to upper case is: " « endl;
cout « strlnput « endl « endl;
transform(strlnput.begin(),strlnput.end(),strlnput.begin(),\
tolower);
402 ЗАНЯТИЕ 16. Классы строк библиотеки STL
cout « "The string converted to lower case is: " « endl;
21: cout << strlnput « endl « endl;
2 2 :
return 0;
}
Результат
Please enter a string for case-convertion:
> ConverT this StrINg!
The string converted to upper case is:
CONVERT THIS STRING!
The string converted to lower case is:
convert this string!
Анализ
Строки 15 и 19 демонстрирую т, насколько эффективно прим еняется алгоритм s t d : : tr a n s f o r m () для изменения регистра содержимого строки.
Реализация строки на базе шаблона STL
Как уже упоминалось, класс s t d : : s t r i n g является фактически специализацией шаб лона класса STL s t d : :b a s ic _ s tr in g < T > . Объявление шаблона контейнерного класса b a s i c _ s t r i n g имеет следующий вид:
templatecclass _Elem,
class _Traits,
class _Ax>
class basic_string
этом определении шаблона крайне важен первый параметр: _ Е 1 ет. Это тип объ ектов, хранимых коллекцией b a s i c _ s t r i n g . Следовательно, класс s t d : : s t r i n g — это специализация шаблона b a s i c _ s t r i n g для _ E lem = char, в то время как класс w s tr in g — это специализация того же шаблона для _ E lem = w char_ t. Другими словами, класс s t r i n g библиотеки STL определяется так:
typedef basic_string, allocator >
string;
Класс w s tr in g библиотеки STL определяется так:
typedef basic_string, allocator >
string;
Таким образом, все возможности и средства строк, рассмотренные до сих пор, фак тически предоставлены шаблоном b a s i c _ s t r i n g , а потому имею тся также у класса w s tr in g .
СОВЕТ
Используйте класс
std::wstring для приложений, которые должны поддер
живать нелатинские символы, такие как в японском или китайском языке.
Резюме
На сегодняшнем занятии рассматривался класс s t r i n g библиотеки STL. Это предо ставляемый стандартной библиотекой шаблонов контейнер, обеспечивающий разработ чику множество возможностей по обработке строк. Данный класс предоставляет вполне очевидные преимущ ества реализации управления памятью, сравнения строк и функций манипулирования строками.
Вопросы и ответы
Я должен обратить строку, используя алгоритм s t d : : reverse (). Какой заголовок следует включить, чтобы использовать эту функцию?
Чтобы функция s t d : : r e v e r s e () стала доступной, следует вклю чить заголовок
< a lg o rith m > .
Какую роль играет алгоритм s t d : : transform () в преобразовании символов стро ки в нижний регистр при использовании функции tolow er () ?
Ф ункция s t d : : t r a n s f o r m () вызывает функцию to lo w e r () для символов объекта класса s t r i n g в пределах границ, переданных функции преобразования.
Do'stlaringiz bilan baham: |