Игнорирование отметок времени - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь написать код, который игнорирует временные метки строк и читает остальные строки разной длины, например,

14/07/20 18:27:02:533 ... C: SPLT 0x00 MTE_DL_RBSFN_STAT 0X00000001 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000 0X00000000
14/07/20 18:27:02:533 ... SLOF
14/07/20 18:27:02:537 ... C: SLOF 0x00
14/07/20 18:27:02:541 forg l1 SetPortMapping 0
14/07/20 18:27:02:550 C: FORG 0x00 Ok l SetPortMapping 0

Я пытаюсь использовать функцию sscanf, чтобы игнорировать метки и прочитайте остальную часть строки. Это произойдет в al oop. Поэтому я не могу использовать определенные %s и %*s. Мне нужен алгоритм, чтобы игнорировать часть строки, то есть временные метки, и читать оставшуюся строку. Спасибо

1 Ответ

0 голосов
/ 02 августа 2020

Вы заметили, что метки времени не имеют фиксированной длины. Однако, если формат всегда равен date timestamp the...rest..., вы можете получить строку как строку, а затем использовать string.find (дважды), чтобы найти второй пробел, например

std::string s;
while (getline(input, s)) {
   size_t loc = s.find(' ');
   loc = s.find(' ', loc + 1);
   s = s.substr(loc + 1);
}
...