Извините, я не знаю уровня ваших знаний си/си++, поэтоум, может, напишу банальности:
По-моему вот такой должен быть алгоритм действий (с моей точки зрения, я весьма далек и от latin 1, и от ucs-4):
1. Язык, как я понял - чистый си++? Ваша задача явно может быть решена без всяких классов и т.п. наворотов си++. Тут они избыточны. Вам точно хочется иметь с ними дело? Если так, то пишем собственный класс, грамотно оформив его в виде .cpp и .h файлов. В конструкторе класса выполняем только те действия, которые необходимо выполнять для инициализации членов класса. Помещать в конструктор основной алгоритм - ввод, преобразование, вывод - неправильно. Далее в public секции вашего класса определяем и реализуем ф-ию преобразования одного кода в latin 1 в символ utf-8. Об этом чуть ниже. Возможно, вы захотите сделать такой конструктор, который получает указатель на объект класса iostream, или даже ios, сохранет его, и, в дальнейшем, при вызове соответствующей ф-ии, считывает и работает с данным потоком. Ваше право.
2. Создаем экземпляр вашего класса. В main() считываем символ из cin, проверем на eof, если не конец файла, передаем нашей ф-ии-члену класса, печатаем результат ее работы в cout:
Код:
while(!cin.eof())
{
char c;
cin >> c;
cout << myClass->Transform(c);
}
Если вы выбрали второй вариант - просто создаем объект класса, передаем ему указаетль на cin, cout, запускаем волшебную ф-ию-член, и вуаля - он все сделает сам.
3. Самое сложное - пишем волшебную ф-ию. Для этого ищем в инете документацию на utf-8 и latin-1 (той, что я нашел только что, недостаточно для решения задача, поэтому не буду приводить ссылки). Внимательно читаем и пишем. Лучше всего все же найти информацию в виде таблицы latin1->utf-8. Задача стандартна, в инете наверняка есть уже готовые решения, но пользоваться ими не советую. Лучше всего выдрать оттуда готовую таблицу - меньше править придется.
Добавлено спустя 3 минуты 6 секунд:
незванный гость писал(а):
e2e4 писал(а):
Всего 256 символов, таблица составит 256 байт,
Это неверно. Таблица должна будет состоять из строк переменной величины, длиной 1-2 байта.
Это все равно не так много. Учитывая текущие объемы памяти ПК, и размеры откомпилированных программ, потеря места на таблицу, относительно алгоритмического подхода, ничтожна. Впрочем, я не настаиваю. Практически любую программную задачу можно решить уймой способов.