Шаг 28.
Библиотека STL.
Обзор функций-членов класса string. Хранение строк в других контейнерах

    На этом шаге мы рассмотрим храненение строк в контейнерах.

    Поскольку класс string определяет тип данных, то можно создать контейнеры, которые будут содержать объекты типа string. Рассмотрим более удачный вариант программы словаря, которая была приведена на 16 шаге.

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <string>
#include <map>
#include <conio.h> //необходимо для getch()
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;

std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

std::string RusTo(const std::string &in)
{
  char *buff = new char [in.length()+1];
  OemToChar(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

int main(int argc, char* argv[])
{
  map<string, string> dictionary;
  dictionary.insert(pair<string, string>("дом","Место проживания."));
  dictionary.insert(pair<string, string>("клавиатура","Устройство ввода данных."));
  dictionary.insert(pair<string, string>("программирование",
      "Процесс создания программы."));
  dictionary.insert(pair<string, string>("STL","Standard Template Library"));
  string s;
  cout << ToRus("Введите слово: ");
  cin >> s;
  s=RusTo(s);
  map<string, string>::iterator p;
  p = dictionary.find(s);
  if (p != dictionary.end())
  	cout << ToRus("Определение: ") << ToRus(p->second);
  else
	cout << ToRus("Такого слова в словаре нет.\n");

  getch();
  return 0;
}
//---------------------------------------------------------------------------
Текст этого примера можно взять здесь.

    Результаты выполнения этой программы представлены на рисунке 1.


Рис.1. Результат работы приложения

    Обратите внимание на то, что в программе используется функция RusTo(), которая выполняет операцию, обратную к ToRus(): она переведит строку из формата char в Oem.

    Со следующего шага мы начнем знакомиться с новыми возможностями стандартной библиотеки C++, в которую входит библиотека STL.




Предыдущий шаг Содержание Следующий шаг