【发布时间】:2021-12-18 16:14:53
【问题描述】:
我正在编写一个应该解析 .srt 字幕文件的 c++ 应用程序(Qt Widgets)。文件的每一部分由一个空行分隔,如下所示:
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]
基本上,我想将整个文件读入QString,然后用空行将其拆分为QString 数组,每个项目都包含这样的部分之一:
2
00:00:56,034 --> 00:00:57,492
[Line]
[Another line]
但是,我不知道该怎么做。我尝试将字符串按\r 和\n 拆分,但这会将所有内容拆分为单独的行,而不是空行。
这是我从 .srt 文件中获取数据的例程:
- 将文件的所有内容读入
QString(名称类似于content)。 - 将
QString拆分为空行,并附加到QStringList(名称类似于sections)。 - 对于
sections中的每一项,用-->标识符分割第二行,并将索引0 和1 分配给名为QString的变量@987654335 @ 和endTime。 - 取出其余的行(第 2 行之后的所有内容都是字幕文本),并将它们附加到名为
subtitleText的QString。 - 将所有收集到的信息添加到
SrtSubtitle实例,并将其附加到QList<SrtSubtitle>
我怎样才能做到这一点?
【问题讨论】:
-
类初始化器看起来像这样:new -- 你有什么理由使用
new来创建你的对象? C++ 不是 Java 或 C#。如果QList像任何标准类一样工作,并且它是StrSubtitleItem的QList,那么qList.add(StrSubtitleItem(start, end, subtitleText));或任何add函数将被调用应该工作。 -
我不知道这一点。无论如何,我更多地使用 C# 和 Java 编程(Android 和 Windows 开发)。感谢您的提示!