![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Нужно считывать данные из текстового файла *.txt
Причём нужно считывать каждый символ, видеть слова, и заносить каждое слово или одиночный символ в массив.(пока одномерный). Думаю, нужно использовать класс CFile. Как использовать указатель чтения в файле seek? Вот
в put1 находится полный путь к нужному текстовому файлу. Дальше как начать считывать данные посимвольно? И заносить в массив? Другими словами не знаю подробного описания работы с CFile и его методами! Помогите пожалуйста! |
|||
|
||||
| zabivator |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Riddik, CFile лучше не использовать, т.к. этим ты жестко привязываешься к платформе. Лучше посмотри в сторону, например boost::split http://boost.org/doc/html/id2580251.html
Вообще говоря, лучше всего определить оператор
использование:
вот и вся реализация! Это сообщение отредактировал(а) zabivator - 10.12.2006, 21:42 --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
||||
|
|||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Можно использовать WinAPI:
strFile - строка,путь к файлу str - массив, здесь будут лежать символы |
|||
|
||||
| zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Brain, кошмар какой.
--------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Спасибо, но в данном случае вопрос о кроссплатформенности не стоит, можно вполне использовать CFile, прога делается на Visual C++ с использованием MFC.
И можно, пожалуйста, попроще, я не настолько ещё осволся, чтобы понять например в данном случае std::istream& operator>>( std::istream& s, std::vector<std::string>& v ) и т.д.? Плюс ко всему мне нужно перер каждым заносос слова в массив, проверять его наличие в этом массиве, чтобы избежать повторений. Другими словами, создаю таблицу идентификаторов. |
|||
|
||||
| zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Riddik, ок, сейчас напишу по пунктам.
Прежде всего - для каждой задачи нужно использовать наиболее декватный инструмент. В данном случае stl будет использовать проще, короче, и... более правильно, с точки зрения "хорошего" стиля.
В твоем случае, если тебе нужно составить таблицу идентификаторов, нужно вместо std::vector использовать std::set, или std:map<std::string,unsigned> - если нужен подсчет встреченных слов. --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Если нада использовать CFile:
CFile.Read(buf,count); buf - куда записывать символы count - скока символов считать Если тебе надо посимвольно считывать, то count = 1, если нада пословесно, то считывай в цыкле посимвольно пока не найдешь пробел. Так помойму легче.
zabivator, что не нравится? |
|||
|
||||
| zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Brain, исспользование платформенно-зависимого апи в задаче, которая решается использованием стандартных средств языка - имхо, извращение.
автор подчеркнул, что он так думает, а не нужно так сделать. К тому же если реализация на стандартных stl-потоках уместилась в пять строчек ( которые приведены мною выше ) через api всяко будет больше гемора, и больше риск возникновения ошибок. Это сообщение отредактировал(а) zabivator - 10.12.2006, 22:38 --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
| Brain |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.12.2006 Где: Россия, Новочерка сск Репутация: нет Всего: нет |
Если нормально знать(понимать) апи то никакого гемора не буедт, ошибок тоже. Я, например, всю жизнь пишу на апи и мне нравится.
ЗЫ: О вкусах не спорят. |
|||
|
||||
| zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Brain, дело не во вкусах, а в адекватности выбора инструмента для решения задачи.
К тому же мне интересно, как ты будешь использовть апи вместе с алгоритмами стандартной библиотеки. Я думаю, правилен один из вариантов: 1) Пишешь велосипеды вместо использования stl 2) Пишешь обертки над апи --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Спасибо большое!!! и zabivatorу, и Brainу!!!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |