【发布时间】:2021-12-08 01:55:26
【问题描述】:
我有一个文本文件,其中包含多个不同长度的字符串,我需要将这些字符串拆分为标记。
是否最好使用strtok 来拆分这些字符串以及如何计算令牌?
文件中的字符串示例
Emma Stone#1169876#COMP242#COMP333#COMP336#COMP133#COMP231
Emma Watson#1169875#COMP336#COMP2421#COMP231#COMP338#CCOMP3351
Kevin Hart#1146542#COMP142#COMP242#COMP231#COMP336#COMP331#COMP334
George Clooney#1164561#COMP336#COMP2421#COMP231#COMP338#CCOMP3351
Matt Damon#1118764#COMP439#COMP4232#COMP422#COMP311#COMP338
Johnny Depp#1019876#COMP311#COMP242#COMP233#COMP3431#COMP333#COMP432
【问题讨论】:
-
strtok是这条路。如果您不确定它是如何工作的,请阅读Documentation。如果需要线程安全,请确保使用strtok_r。strtok在找不到更多令牌时返回 NULL。这就是你可以计算代币数量的方法。 -
@vsr:
strtok()很少是适合任何事情的工具。在这种情况下,尚不清楚##的序列是否等同于单个#,以及出现在行首或行尾的#是否应被忽略...strtok()做出了强有力的假设:这些情况可能不是预期的行为。