![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| John_Doe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.7.2004 Репутация: нет Всего: нет |
Hi all,
Подскажите, плз, как считать текстовый файл в vector<string>, чтобы строки не разбивались по пробелам, а только по \n или \r? Делаю так: ifstream ifs("test.txt"); istream_iterator<string> ii(ifs); istream_iterator<string> ieos; vector<string> vs(ii, ieos); засунуть куда-нибудь noskipws не получается... может не туда? ;) Заранее признателен за вашу помощь! |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А так не получается?
|
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
В смысле cin>>skipws>>str;
|
|||
|
||||
| John_Doe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.7.2004 Репутация: нет Всего: нет |
Олег,
спасибо, конечно, но, простите, где вы видите cin? Если бы я хотел считывать из консоли, то конечно бы именно так и сделал (таких примеров в каждой книжке по С++ достаточно). Но мне нужно именно из файла и с наименьшими усилиями (можно было бы использовать getline() - но это не столь красиво и кратко). |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
ifs>>skipws>>str; Читаешь в цикле по одной строке и запихиваешь в массив |
|||
|
||||
| John_Doe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.7.2004 Репутация: нет Всего: нет |
Так я ж поэтому и упомянул, что решения "в лоб" мне не хочется. Хочется кратко и красиво, как в приведённом мной примере с инициализацией вектора через итераторы входного потока.
Поэтому и спросил здесь, надеясь на помощь гуру, а не потому, что просто решения в лоб через ifs.getline(str) - ну или с использованием ifs>>skipws>>str - и push_back(str) мне не известно... Спасибо, Олег, за внимание, но, право слово, хочется красоты. |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Молодец! Перепиши оператор >> для своего класса - будет красиво и круто |
|||
|
||||
| John_Doe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.7.2004 Репутация: нет Всего: нет |
Типа, красиво никак? Будем искать...
Это сообщение отредактировал(а) John_Doe - 19.7.2004, 13:16 |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А что ты тогда понимаешь под красотой? Чтобы вручную вообще нифига не писать? |
|||
|
||||
| John_Doe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.7.2004 Репутация: нет Всего: нет |
Под красотой я понимаю максимальное использование доступных средств при минимуме рутины.
Например, "красивее" использовать for_each вместо прохода с итератором. А если "вообще нифига не писать", то и красоты не будет. Ещё раз повторю - решение в лоб меня не интересовало, тк. я его и сам знал. Хотелось узнать, можно ли сделать красивее с использованием итераторов потока ввода. Если ты уверен, что так сделать нельзя, то нужно было сразу это и сказать... |
|||
|
||||
| Morel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.10.2003 Репутация: 1 Всего: 1 |
Правда конец строки любой разделитель, но можешь что нибудь дальше сам придумать. |
|||
|
||||
| John_Doe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.7.2004 Репутация: нет Всего: нет |
Спасибо, Morel. Но скажи, пожалуйста, чем твой вариант отличается от приведённого мной?
Для простоты восприятия, можно слегка модифицировать мой пример (поближе к твоему):
Мой вариант делает ровно тоже самое, только короче и понятнее = красивее. Беда только в том, что конец строки не тот, что нужно. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |