На этом шаге мы рассмотрим храненение строк в контейнерах.
Поскольку класс 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.