2011-01-29 149 views

回答

0

使用Boost Split,你不能。拆分字符串而不复制它们的明显(但丑陋的)方法是strtok(或者,最好是strtok_s)。

+0

我以为你可以使用boost的iterator_range类型。 – user12232 2011-01-29 09:50:32

1

您可以使用在C++ 0x或C++ 98 TR1中定义的std::regex--这会将迭代器返回到字符串中(好吧,无论如何,它都在一个门面后面) - 因此它不涉及复制字符串。 C++ 0x正则表达式支持提取匹配和分割(提取不匹配) - 因此它是strtok的完全替代品,具有很多附加功能。

请参阅John Cook's webpage例如,wikipediavideo by Stephan T Lavavej。您可能需要使用boost::regex,直到C++ 0x得到更广泛的实施;两者兼容。

0

您可以使用类似于llvm::StringRef的收件人,该收件人只是指向数组和大小的指针,并且不会为底层序列提供增变。

但是,这意味着重新编码自己的拆分逻辑。