C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – (How)我可以使用带有c字符串(char指针)的Boost字符串算法库吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有可能以某种方式调整c风格的字符串/缓冲区(char *或wchar_t *)来使用 Boost String Algorithms Library吗?

也就是说,例如,它的trimalgorithm有以下声明:

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 *的原因是我想在我们现有的代码库上使用一些algorthims.将所有char缓冲区重构为字符串将比其值更多的工作,并且当更改或调整某些内容时,能够将给定算法应用于恰好存在于当前代码中的任何c样式字符串将是很好的.

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

解决方法

对于SequenCET类型的操作,您可能必须使用std :: String.如果你想自己实现它,你必须满足更多的创建,破坏,值语义等要求.你基本上最终会得到std :: String的实现.

但是,RangeT类型的操作可以使用Boost.Range库中的iterator_range在char *上使用.不过,我没试过.

大佬总结

以上是大佬教程为你收集整理的c – (How)我可以使用带有c字符串(char指针)的Boost字符串算法库吗?全部内容,希望文章能够帮你解决c – (How)我可以使用带有c字符串(char指针)的Boost字符串算法库吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。