gpt4 book ai didi

c++ - 在 boost 中,如何将 boost 迭代器传递给以某种方式转换为 std::string 的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:33 25 4
gpt4 key购买 nike

请在以下代码末尾将特定问题作为注释查看。

std::string s("my sample string \"with quotes\"");

boost::escaped_list_separator<char>
els(""," ","\"\'");

boost::tokenizer<boost::escaped_list_separator<char> >::iterator
itr;

boost::tokenizer<boost::escaped_list_separator<char> >
tok(s, els);

itr=tok.begin();
if (itr!=tok.end())
fn_that_receives_pointer_to_std_string(itr); // <---- IS IT POSSIBLE TO SEND POINTER AND NOT HAVE TO CREATE A NEW STRING ??

最佳答案

boost::tokenizer<boost::escaped_list_separator<char> >::iterator不是指向 std::string 的指针, 但你可以把它变成 std::string const *

&(*itr)

如果 const指针不是你必须传递的,你可以这样做

std::string s(*itr);

并通过&s ,取决于 fn_that_receives_pointer_to_std_string 的所有权语义. Boost Tokenizer不区分iteratorconst_iterator , 所以 operator* 的结果总是 const .

关于c++ - 在 boost 中,如何将 boost 迭代器传递给以某种方式转换为 std::string 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888432/

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