как грузить файл в вектор, разбивая по переводам строки?
От: Дикс Россия http://thedowntown.ru
Дата: 26.12.09 11:28
Оценка:
открываю файл

ifstream fin("file.txt");

копирую его в вектор, типа string:

vector<string> accounts;
copy(istream_iterator<string>(fin), istream_iterator<string>(), back_inserter(accounts));

получаю вектор в котором файл разбит на элементы по ПРОБЕЛАМ

как сделать так, чтобы он разбивал по переводам строк?
http://thedowntown.ru — Даун Таун, треш креативы о Науме и мёртвом городке
Re: как грузить файл в вектор, разбивая по переводам строки?
От: Lorenzo_LAMAS  
Дата: 26.12.09 14:16
Оценка: :)
Здравствуйте, Дикс, Вы писали:

Д>открываю файл


Д>ifstream fin("file.txt");


Д>копирую его в вектор, типа string:


Д>vector<string> accounts;

Д>copy(istream_iterator<string>(fin), istream_iterator<string>(), back_inserter(accounts));

Д>получаю вектор в котором файл разбит на элементы по ПРОБЕЛАМ


Д>как сделать так, чтобы он разбивал по переводам строк?


Ну сделай дешево и сердито — напиши пустой класс, наследующий стринг, и оператор ввода, который ввызовет гетлайн. Им и параметризуй итератор.

Of course, the code must be complete enough to compile and link.
Re[2]: как грузить файл в вектор, разбивая по переводам стро
От: Lorenzo_LAMAS  
Дата: 26.12.09 14:21
Оценка:
L_L> и оператор ввода, который ввызовет

Оператор ввода для твоего класса.
Что-нибудь вроде такого: (на полезность/бесполезность/корявость кода мне плевать в данном случае )
class StringAdapter : public std::string{};
std::istream & operator >> (std::istream & in, StringAdapter & str)
{
   std::getline(in, static_cast<std::string &>(str));
   return in;
}

....
vector<string> vs;
copy(istream_iterator<StringAdapter>(in), istream_iterator<StringAdapter>(),
     back_inserter(vs));
...
Of course, the code must be complete enough to compile and link.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.