![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| cupper |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
Нужно построчно считать файл в list<string>
в начале сделал вот так
работает если в строке нет пробелов, иначе получается не то что нужно. Попробовал убрать режим пропуска пробелов, добавив
в этом случае считывается только первая строка (в ней нет пробелов, совпадение или как) --> PS. забавно, вместо того что бы считывать и пробелы тоже, считывание происходит до первого пробельного символа а дальше прекращается. Далее решил заюзать вот так
на что имею непонятную мне ошибку
на этом идеи исчерпались :( как сделать задуманное ? (используя потоковые итераторы) Это сообщение отредактировал(а) cupper - 10.3.2011, 13:05 |
||||||||
|
|||||||||
| rudvil |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 20.11.2009 Где: Latvia/Riga Репутация: 2 Всего: 3 |
А почему он вообще должен считывать построчно?
Пример использования std::istreambuf_iterator<>() для считывания всего файла в стринг
Как видно никаких разделителей тут нету. --------------------
xor |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
| cupper |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
потому что я так сказал
меня не интересует по символьное считывание. PS. когда читаешь через буферезированный итератор, делать
не нужно, так как он читает на прямую буфера и возвращает все символы. |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
как-то так:
|
|||
|
||||
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: 1 Всего: 1 |
это способ который просто пришел в голову, или это единственный способ сделать задуманное ? Изначально хотел именно без введение какиз либо дополнитеьный манипуляций сделать. Странно что с istream_iterator<string>(ifstream_) работает, а istreambuf_iterator<string>(ifstream_) уже нет. Это именно архитектурное ограничение сего итератора ? или все таки что то я сделал не правильно. |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
полагаю, что единственный. по крайней мере, когда я задался тем же вопросом, это был единственный способ проделать желаемое.
не уверен. но предположу, что это связанно с тем, что для istream_iterator проверяется наличие operator std::string(), а для istreambuf_iterator - нет. |
|||
|
||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
не получится. для использования итераторов потребуется как минимум переопределить operator>> если просто переопределять оператор, поместить его придется в std, что не очень хорошая идея либо явный цикл с getline()
vs
|
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |