Для базовых c типов данных у меня нет проблем с синтаксическим анализом данных в таком формате:
if (FALSE == PQgetisnull(res, rowNumber, columnIndex))
{
retVal.m_assignedSocket = atol(PQgetvalue(res, rowNumber, columnIndex));
} else
{
retVal.m_assignedSocket = 0;
}
Я хотел бы иметь поле массива в одной из моих таблиц, которое представляет собой массив bigints. Я полагаю, что могу вставить данные следующим образом:
// array elements are separated by curly braces
insertQuery += "{";
for (size_t i = 0; i < settings.m_stepVector.size(); i++)
{
if (snprintf(buffer, sizeof(buffer), ", %llu", settings.m_stepVector[i]) > (int) sizeof(buffer))
{
LOG_SYSTEM_WARNING("Unexpected string truncation\n");
}
insertQuery += buffer;
}
insertQuery += "}";
Проблема заключается в разборе строки. Я не нашел ни одного примера или документации, указывающей формат возвращаемого столбца массива. Я предполагаю, что это строка с фигурными скобками на каждом конце. Какой формат между фигурными скобками? Не похоже, что это что-то новое, но я нигде не могу найти ответ. Может быть, я не знаю правильных ключевых слов для поиска. Я попытался postgresql, массив, PQgetvalue и синтаксический анализ.