170 похожих чатов

То есть в С++17 без копирования csv никак распарсить?

18 ответов

6 просмотров

https://godbolt.org/z/zjsTeYEfc

Ramil-Rizvanov Автор вопроса
Stas
https://godbolt.org/z/zjsTeYEfc

можно так конечно

https://github.com/p-ranav/csv2

Ramil-Rizvanov Автор вопроса
Alexander Karaev
https://github.com/p-ranav/csv2

for (const auto row: csv) вот поэтому и не люблю auto. смотришь на код и не понимаешь, что там std::string_view или std::string или что то ещё. происходит копирование памяти или нет. всё скрыто под auto

Stas
for (const auto row: csv) вот поэтому и не лю...

то есть намного лучше написать for (const std::string_view row : csv) там, где случайно окажется std::string?

Alexander Karaev
то есть намного лучше написать for (const std::str...

да и получить ошибку компиляции, так как у std::string_view нет конструктора из rvalue

Ramil-Rizvanov Автор вопроса
Alexander Karaev
https://github.com/p-ranav/csv2

а вообще как-то так сложилось, что я не доверяю всяким мелким библиотекам

Ramil Rizvanov
а вообще как-то так сложилось, что я не доверяю вс...

да там в коде веселье. operator* имеет сложность O(n) Row operator*() { Row result; result.buffer_ = buffer_; result.start_ = start_; result.end_ = end_; if (const char *ptr = static_cast<const char *>(memchr(&buffer_[start_], '\n', (buffer_size_ - start_)))) { end_ = start_ + (ptr - &buffer_[start_]); result.end_ = end_; start_ = end_ + 1; } else { // last row end_ = buffer_size_; result.end_ = end_; } return result; }

Stas
да там в коде веселье. operator* имеет сложность O...

предложите свой вариант ленивого чтения с минималистичным интерфейсом

Alexander Karaev
предложите свой вариант ленивого чтения с минимали...

хорошей практикой является такие функции явно обозначать используя глагол, в котором описанно действие неконстантной сложности, например read_cells(), extract_cells(), но не get_cells() и тем более не operator* Ну или если очень хочется, то хотя бы сохранять результат поиска, что бы он был только при первом вызове оператора*

Stas
хорошей практикой является такие функции явно обоз...

как будет выглядеть код - for (const auto cell : csv.read_cells())?

Stas
да. так лучше будет

и в какой момент читать? в момент вызова read_cells прочитать вообще весь файл?

Можно. Парси. Пиши свой итератор парсера. Всё в твоих руках.

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Какой дос блять?
007
9
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Карта сайта