У меня есть список данных, которые необходимо проанализировать.Данные выглядят следующим образом:
Элемент1 \ t OptionalElement2 \ t OptionalElement3 \ r \ n
Элементы (значения) разделены символами '\ t' и OptionalElement2 и /или OptionalElement3 может появиться или не появиться.Это означает, что я мог бы иметь:
Element1 \ t \ t OptionalElement3 \ r \ n
или
Element1 \ t OptionalElement2 \r \ n
или
Element1 \ r \ n
Я хотел прочитать значения с регулярным выражением в C или C ++язык, использующий sscanf, с
while (counter < 3) {
memset(buffer[counter], '\0', sizeof(buffer[counter]));
counter++;
}
sscanf(toParse, "%[^\t]%[^\t\r\n]%[^\t\r\n]\r\n", buffer[0], buffer[1], buffer[2])
Но тогда, когда OptionalElement2 пуст, буфер [1] получает значения OptionalElement3 вместо массива '\ 0'.Есть ли способ правильно обработать это, чтобы, когда значения не являются выходными, их соответствующие контейнеры также были пустыми?
Спасибо.