I’m writing a c++ application (Qt Widgets) that is supposed to parse an .srt subtitle file. Each part of the file is separated by an empty line, like this:
1
00:00:08,000 --> 00:00:11,000
[Line]
2
00:00:56,034 --> 00:00:57,492
[Line]
[Another line]
3
00:01:13,676 --> 00:01:15,420
[Line]
Basically, I want to read the entire file to a QString, and split it by empty lines into QString array, each item containing one of those sections like this:
2
00:00:56,034 --> 00:00:57,492
[Line]
[Another line]
However, I cannot figure out how to do this. I tried splitting the string by \r and \n, but that split everything into separate lines, not by empty lines.
This is the routine I had in mind to get the data from the .srt file:
- Read all of the contents of the file to a
QString(named something along the lines ofcontent). - Split the
QStringby empty lines, and append to aQStringList(named something along the lines ofsections). - For each item in
sections, split the second line by the-->identifier, and assign indexes 0 and 1 toQStringvariables calledstartTime, andendTime, respectively. - Take the rest of the lines (everything after line 2 is the subtitle text), and append them to a
QStringcalledsubtitleText. - Add all the gathered information to an
SrtSubtitleinstance, and append it toQList<SrtSubtitle>
How can I achieve this?
>Solution :
when reading text files, newlines are usually represented as \n
With this you can split your string using \n\n
this will split it when it is 2 new lines without anything between them.