2011-01-29 140 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的收件人,該收件人只是指向數組和大小的指針,並且不會爲底層序列提供增變。

但是,這意味着重新編碼自己的拆分邏輯。