假设我有一组用户ID、访问时间、程序名称和版本号的CSV字符串列表,例如:
1,1342995305,Some Program,0.98
1,1342995315,Some Program,1.20
2,1342985305,Another Program,15.8.3
1,1342995443,Bob's favorite game,0.98
3,1238543846,Something else,
...
假设这个列表不是一个文件,而是一个内存中的字符串列表。
现在假设我想找出某些程序被访问的频率,按照它们的版本号列出来。(例如,“Some Program version 1.20”被访问了193次,“Some Program version 0.98”被访问了876次,“Some Program 1.0.1”被访问了1,932次)
是构建正则表达式然后使用regexec()查找匹配并提取版本号更好,还是使用strstr()匹配程序名称加逗号,然后只读取字符串后面的部分作为版本号更好?如果有区别,假设我在Linux上使用GCC。
是否有性能差异?哪种方法更“好”或更“适当”?这是否重要?
strchr
、strtok
等。一些字符串函数在第一次操作时调用strlen
,这可能会耗费一些时间。请注意,使用正则表达式并仅编译一次可能与strstr
的速度相当。 - JimRstrstr
能够提高可读性和可维护性,因为它具有低复杂度(不需要准备工作)。然而,这是否意味着正则表达式应该仅用于复杂搜索,还是这取决于个人喜好? - cegfault