gpt4 book ai didi

c++ - (如何)我可以将 Boost 字符串算法库与 c 字符串(字符指针)一起使用?

转载 作者:可可西里 更新时间:2023-11-01 18:36:16 26 4
gpt4 key购买 nike

是否有可能以某种方式调整 c 风格的字符串/缓冲区(char*wchar_t*)以与 Boost String Algorithms Library 一起工作? ?

也就是说,例如,它的trim算法有如下声明:

template<typename SequenceT> 
void trim(SequenceT &, const std::locale & = std::locale());

the implementation (寻找trim_left_if)要求序列类型有一个成员函数erase

我如何将其与原始字符指针/c 字符串缓冲区一起使用?

char* pStr = getSomeCString(); // example, could also be something like wchar_t buf[256];
...
boost::trim(pStr); // HOW?

理想情况下,算法将直接在提供的缓冲区上运行。(尽可能。如果算法需要在“字符串”中分配额外的空间,则显然无法运行。)


@Vitaly 问:为什么不能从 char 缓冲区创建一个 std::string 然后在算法中使用它?

我拥有 char* 的原因是我想在我们现有的代码库上使用一些算法。将所有 char 缓冲区重构为 string 的工作量大于它的值(value),并且在更改或改编某些内容时,最好能够将给定的算法应用于恰好存在于当前代码中的任何 c 风格的字符串。

使用字符串意味着 (a) 将 char* 复制到字符串,(b) 将算法应用于字符串,以及 (c) 将字符串复制回 char 缓冲区。

最佳答案

对于 SequenceT 类型的操作,您可能必须使用 std::string。如果您想自己实现它,则必须满足更多关于创建、销毁、值语义等的要求。您基本上最终会实现 std::string

不过,RangeT 类型的操作可能可以在使用 iterator_rangechar* 上使用。来自 Boost.Range 库。不过我没试过。

关于c++ - (如何)我可以将 Boost 字符串算法库与 c 字符串(字符指针)一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com