使用boost库来分割字符

onlyhuiyi 2014-01-25 12:45:17
大家好
我遇到一个问题,为什么我使用 "|" 做分隔符的时候,返回的字符串数组是字母,
而我使用其它的分割符号返回的是 "ni" "hao" "a" 这三个字符串,为什么使用"|"无法当分割符呢?
百思不得其解,先谢谢大家了


std::vector<std::string> split(const std::string& str,const std::string& s)
{
boost::regex reg(s.c_str());
std::vector<std::string> vec;
boost::sregex_token_iterator it(str.begin(), str.end(), reg, -1);
boost::sregex_token_iterator end;
while(it!=end)
{
vec.push_back(*it++);
}
return vec;
}



int _tmain(int argc, _TCHAR* argv[])
{
std::string str = "ni|hao|a";
auto names = split(str, "|");

BOOST_FOREACH( decltype(*names.begin()) it, names)
{
std::cout << it << std::endl;
}

return 0;
}
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
onlyhuiyi 2014-01-25
  • 打赏
  • 举报
回复
引用 1 楼 icosagon 的回复:
|在正则里有特殊意义,前面加反斜杠试试

std::string str = "ni|hao|a";
    auto names = split(str, "\\|");

    BOOST_FOREACH( decltype(*names.begin()) it, names)
    {
        std::cout << it << std::endl;
    }

    return 0;
改成这样就行了 谢谢啊
onlyhuiyi 2014-01-25
  • 打赏
  • 举报
回复
引用 1 楼 icosagon 的回复:
|在正则里有特殊意义,前面加反斜杠试试
是这样啊,但是反斜杠不行的。。
icosagon 2014-01-25
  • 打赏
  • 举报
回复
|在正则里有特殊意义,前面加反斜杠试试

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧