У меня задание: Создать собственный библиотечный файл констант, типов и функций для реализации указанных задач и программу, которая использует его возможности для работы с файлами (зашифровки, подсчет количества слов) .
Но, думаю, я капец как натупил. Не знаю как правильно описать функцию, которая бы принимала поток и работала над ним, и я просто написал "stream".Никогда не создавал библиотечный файл и скажите пожалуйста какие у меня ошибки.
Вот код библиотеки. только не пугайтесь http://pastebin.com/bJWbPQmh
Другие языки программирования и технологии
Создание библиотеки
"В комплекте" к библиотеке должен идти заголовочный файл, с помощью которого можно будет использовать функции из нее. Просто выносите все объявления в файл с таким же именем и расширением .h, оборачиваете в #ifndef #define #endif и подключаете в файл .cpp (чтоб лишний раз определения не писать) .
Тип данных для потока ввода - std::istream, только в начале подключить iostream. Вторая функция должна принимать два аргумента - поток для вывода (std::ostream) и для ввода (std::istream), потому как читать и записывать в один и тот же поток нельзя. Далее вы как-то странно пытаетесь в цикле прочитать данные сразу во весь массив, так нельзя. 13 строка - f >> c[t]; Во второй функции хорошо бы проверять корректность читаемых данных - индексы могут выйти за пределы массива. Далее: использовать rewind для istream не получится, нужно писать f.seekg(0, f.beg); но эта функция вообще не понадобится, если вы будете использовать два аргумента (а вам придется) . В первом цикле второй функции, мне кажется, вы перепутали местами i и j.
Далее. Не нужно давать такие наркоманские имена функциям и переменным - они должны отражать их назначение. Не нужно делать не менее наркоманские отступы! Листинг трудно читать и легко ошибиться. Вот, почитайте, как надо - выберите какой-нибудь стиль для себя и следуйте ему. Вики.
А в общем все отлично!
Тип данных для потока ввода - std::istream, только в начале подключить iostream. Вторая функция должна принимать два аргумента - поток для вывода (std::ostream) и для ввода (std::istream), потому как читать и записывать в один и тот же поток нельзя. Далее вы как-то странно пытаетесь в цикле прочитать данные сразу во весь массив, так нельзя. 13 строка - f >> c[t]; Во второй функции хорошо бы проверять корректность читаемых данных - индексы могут выйти за пределы массива. Далее: использовать rewind для istream не получится, нужно писать f.seekg(0, f.beg); но эта функция вообще не понадобится, если вы будете использовать два аргумента (а вам придется) . В первом цикле второй функции, мне кажется, вы перепутали местами i и j.
Далее. Не нужно давать такие наркоманские имена функциям и переменным - они должны отражать их назначение. Не нужно делать не менее наркоманские отступы! Листинг трудно читать и легко ошибиться. Вот, почитайте, как надо - выберите какой-нибудь стиль для себя и следуйте ему. Вики.
А в общем все отлично!
Похожие вопросы
- Pascal создание библиотеки
- почему изначально изучают С++ консольных приложений? и какую библиотеку выбрать потом для создания GUI
- Как пишутся библиотеки? Что почитать, чтобы попробовать написать самому что-то?
- Как пишут DLL-библиотеки?
- VisualC++ 2010. При выборе MFC - статической библиотеки программа не компилируется.
- Нет библиотеки Dev-C++ нет библиотеки mach.h компилятор MinGW где скачать стандартные библиотеки, и как установить?
- Delphi dll библиотеки.
- Алгоритмы стандартной библиотеки шаблонов. Вектора в C++.
- Что нужно знать что бы понимать с++? Там постоянно нужно подключать библиотеки. Мне не понятно откуда компилятор берет
- *.bat файл, проверка наличия нужного языка программирования и необходимых библиотек.