C/C++ Ready | Программирование
Парсим простой CSV без сторонних библиотек на C++!
Иногда нужно разобрать строку CSV из лога, экспорта или конфигурации. Если формат простой, можно обойтись стандартной библиотекой и аккуратно пройти строку посимвольно.
Возьмём строку:
std::string line = "id,\"hello, cpp\",active";
Главная сложность это запятая внутри кавычек. Её нельзя считать разделителем.
Заведём буфер и флаг:
std::string cell;
bool quoted = false;
Теперь проходим символы:
for (char ch : line) {
if (ch == '"') {
quoted = !quoted;
continue;
}
if (ch == ',' && !quoted) {
cells.push_back(cell);
cell.clear();
continue;
}
cell += ch;
}
После цикла не забываем добавить последнюю ячейку:
cells.push_back(cell);
Проверим результат:
for (const auto& value : cells) {
std::cout << '[' << value << "]\n";
}
Ожидаемый вывод:
[id]
[hello, cpp]
[active]
При парсинге текста важно учитывать контекст. Одна и та же запятая может быть разделителем или обычным символом внутри значения.
📣 C++ Ready | #практика
19 · 2.9K ·