Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
boost是一个很好的库
但是并不是完美的
在使用的时候需要详细注意

    std::string tag;
    boost::tokenizer
<> tok(std::string("猫 狗 猪"));
    
for(boost::tokenizer<>::iterator beg=tok.begin();beg!=tok.end();++beg)
    {
        tag 
+= *beg;
        tag 
+= "+";
    }
    std::cout<<tag<<std::endl;
大家说说结果吧

posted on 2010-11-19 15:56 ccsdu2009 阅读(2578) 评论(12)  编辑 收藏 引用 所属分类: boost库等
Comments
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    true
    Posted @ 2010-11-19 17:35
    不明白为什么这样写文章。。。  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    gaimor
    Posted @ 2010-11-19 17:40
    @true
    我写文章主要是记录
    不是为了给别人看 呵呵  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    true
    Posted @ 2010-11-19 17:50
    @gaimor
    但是发到了首页精华区,前面有个文章讨论,看出来大家都很看得开,您这样写文章,明显是吊胃口嘛,建议写出结果,即解决方案  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    true
    Posted @ 2010-11-19 17:51
    算了,我可能说了不该说的:)  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    test_user
    Posted @ 2010-11-19 18:13
    乱码吧, 多字节被拆开了。  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起[未登录]
    tom
    Posted @ 2010-11-19 22:37
    你的使用方法是错误的.应该使用wstring, 与 L"猫 狗 猪". 建议学习一下有关UNICODE等编码相关知识,以及C++的相关支持方式。基本上,除非你的母语是English也只给English people写程序,encoding相关的知识是绕不开的,早晚要掌握。  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    gaimor
    Posted @ 2010-11-20 13:56
    @tom
    呵呵 说得有道理 我试试
    不过这个不能使用wstring来解释吧  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起[未登录]
    tom
    Posted @ 2010-11-20 14:42
    tokenizer<>是按string的traits来分割的,也就是说“隐含的意思“是只能用来分割用ISO/IEC 8859-1字符集的,中文如"猫 狗 猪"肯定不是。

    所以你要么用支持特定编码的第三方库(utf-cpp),这样来增加string的编码支持功能;要么用wstring达到理论上不完备,但现实上不大可能出错的效果(限于Windows). C++的basic_string<CharT>是不包含任何编码功能的,也就谈不上对文本的语义断开了。所以你的看到的结果其实是C++意义上正确的,而在中文语义上错误了。因此是你误用工具,不是boost库或C++语言的错。

    关键的知识点在于,任何文本一定是有编码的,每次你用到文本,你总是接受了某种隐含的假设,只是你可能没意识到。除非你只写英文版软件,你可以假装编码不存在。

    你的例子刚好说明,你必须要掌握的编码的相关知识。  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起[未登录]
    Yang
    Posted @ 2010-11-20 15:14
    @tom
    同意~  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    gaimor
    Posted @ 2010-11-21 17:17
    @tom
    谢谢  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起
    空明流转
    Posted @ 2010-11-22 13:27
    简而言之,楼主傻逼了,鉴定完毕。
    咩哈哈。
    真的还就是wstring的问题。。。  回复  更多评论   
  • # re: boost库使用注意事项(1)-从boost::tokenizer说起[未登录]
    tom
    Posted @ 2010-11-22 21:19
    @空明流转,
    我可没冒犯楼主的意思,闻道有先后而已。  回复  更多评论   

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理