![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
Здравствуйте!
Есть файл содержащий слова. Так же в этом файле есть комментарии идущие после "--" пример: word1 word2 word3 -- comment --comment -------------------- word4 word5--comment Пытаюсь создать функцию которая мне выдавала бы эти слова по-одному, т.е: void GetWordFromFile(std::ifstream File, std::string WordFromFile, std::string RemarkSymbol) В итоге все мои старания свелись к следующему: Код:
Компилятор выдает одну ошибку : 1>c:\program files\microsoft visual studio 8\vc\include\fstream(675) : error C2248: 'std::basic_ios<_Elem,_Traits>::bas ic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>' 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\program files\microsoft visual studio 8\vc\include\ios(151) : see declaration of 'std::basic_ios<_Elem,_Traits>::bas ic_ios' 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> This diagnostic occurred in the compiler generated function 'std::basic_ifstream<_Elem,_Traits> ::basic_ifstream(const std::basic_ifstream<_Elem,_Traits> &)' 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] После некоторого времени раздумья решил просить помощи. Кто что думает по этому поводу? Может есть другие варианты реализации? Какие? П.с.: программированию (не считая школьный и университетский-ознакомительный курсы) учился сам, по самоучителю. Если в есть какие то принципиальные ошибки и/или недочеты, большая просьба - указать мне на них. Спасибо! |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
|
|||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
Спасибо большое!
Заработало! Только этот код похоже бесполезен! ![]() А вообще на данную тему есть наработки? |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Не знаю, мб и есть...
Да и задачу сделать просто довольно...я бы так сделал:
Это сообщение отредактировал(а) toxx - 18.4.2010, 00:44 |
|||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
на самом деле, toxx, вышеизложенный код при прочтении файла типа:
word1 word2 word3 -- comment --comment -------------------- word4 word5--comment выдаст следующее: word1 word2 word3 word4 word5 1) не выдает слова по отдельности 2) выдает пустые строки Вообще что в идеале нужно: перегрузить оператор >> (извлечение из потока) класса ifstream так что бы он при прочтение
файла(см. выше), получить следующее: word1 word2 word3 word4 word5 Это сообщение отредактировал(а) htzg - 19.4.2010, 21:40 |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
htzg
Странно но у меня выдаёт вот так
без пробелов. но задание понял всеравно не так =) Это сообщение отредактировал(а) toxx - 19.4.2010, 23:26 |
|||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
Тогда так. Это сообщение отредактировал(а) toxx - 19.4.2010, 23:43 |
|||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
...Нужна (была) функция, при вызове которой из потока-файла извлекается слово(одно) в формате std::string, c учетом того что файл содержит комментарии идущие после "--" и до конца строки. При этом об оптимизации забывать нельзя т.к. файл содержит миллионы (до ~миллиарда) слов...
Кроме того между словами, перед ними и после них могут стоять пробелы и табы в неограниченном количестве. Могут быть строки которые ни чего не содержат. Длина строки заранее не известна. (По-простому говоря этот файл создается автоматически, но местами правится ручками) Вот что у меня получилось:
Хочу пояснить почему функция bool, а не void: функция, по-мимо того что извлекает std::string, еще возвращает значение true или false. Значение false говорит о том что файл дочитан до конца(а считывается он строками) и все "слова" (из этой строки) извлечены. Есть предложения по оптимизации(в принципе скорость пока устраивает) ? ![]() Это сообщение отредактировал(а) htzg - 30.4.2010, 19:09 |
|||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
немного переделал...
вопрос все тот же : Оптимизировать можно ? |
|||
|
||||
htzg |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
и еще не много....
пример использования:
файл содержит: word1 word2 -- comm ------------------- word3--comm / word4 на экран выведется: word1 word2 word3 Добавлено через 4 минуты и 3 секунды Вопрос, по большому счету, решен. Всем спасибо(toxx в особенности)! Удачи! ![]() Это сообщение отредактировал(а) htzg - 1.5.2010, 15:34 |
||||
|
|||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
htzg
Что-то вы долго отвечали... я уже и забыл про тему =) А мой вариант падает да?=) ну просто интересно...как будет вести себя моя функция =) Это сообщение отредактировал(а) toxx - 1.5.2010, 16:01 |
|||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
||||
|
||||
toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 2 Всего: 13 |
htzg
хорошо, что работает как-то- это радует =) А в оптимизации я вам ничем помочь не могу, т.к. с итераторами знаком поверхностно и не разу не применял( без STL обхожусь пока). Добавлено через 2 минуты и 59 секунд Странно что никто не заходит кроме меня отписаться, люди тут есть очень даже знающие думаю помоглибы.. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |