如何在不制作字符串副本的情况下拆分?
答案 0 :(得分:1)
您可以使用C ++ 0x或C ++ 98 TR1中定义的std::regex
- 这会将迭代器返回到字符串中(好吧,无论如何都在幕后) - 因此它不涉及复制字符串。 C ++ 0x正则表达式变体支持提取匹配和拆分(提取不匹配) - 因此它是strtok
的完全替代,具有很多额外的功能。
例如,请John Cook's webpage,wikipedia或video by Stephan T Lavavej。您可能需要使用boost::regex,直到更广泛地实现C ++ 0x;两者兼容。
答案 1 :(得分:0)
使用Boost Split,你不能。拆分字符串而不复制字符串的明显(但丑陋)方法是strtok
(或者,最好是strtok_s
)。
答案 2 :(得分:0)
您可以使用类似于llvm::StringRef
的收件人,它只是指向char
数组和大小的指针,并且不为基础序列提供增变器。
然而,这意味着要重新编码自己的分裂逻辑。