标签: boost-tokenizer

Boost :: tokenizer逗号分隔(c ++)

对你们来说应该很容易.....

我正在玩使用Boost的tokenizer,我想创建一个逗号分隔的令牌.这是我的代码:

    string s = "this is, , ,  a test";
boost::char_delimiters_separator<char> sep(",");
boost::tokenizer<boost::char_delimiters_separator<char>>tok(s, sep);


for(boost::tokenizer<>::iterator beg= tok.begin(); beg!=tok.end(); ++beg)
{
    cout << *beg << "\n";
}
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

This is


 a test
Run Code Online (Sandbox Code Playgroud)

我得到的是:

This
is
,
,
,
a
test
Run Code Online (Sandbox Code Playgroud)

更新

c++ boost tokenize boost-tokenizer

9
推荐指数
1
解决办法
1万
查看次数

错误的标记化

我有这个代码:

#include <boost/tokenizer.hpp>

typedef boost::tokenizer<boost::char_separator<char> > tokenizer;

int main() {
    using namespace std;
    boost::char_separator<char> sep(",");

    string s1 = "hello, world";
    tokenizer tok1(s1, sep);
    for (auto& token : tok1) {
        cout << token << " ";
    }
    cout << endl;

    tokenizer tok2(string("hello, world"), sep);
    for (auto& token : tok2) {
        cout << token << " ";
    }
    cout << endl;

    tokenizer tok3(string("hello, world, !!"), sep);
    for (auto& token : tok3) {
        cout << token << " ";
    }
    cout << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-tokenizer

2
推荐指数
1
解决办法
121
查看次数

矢量的逗号分隔标记到const char**

我试图将逗号分隔的字符串转换为const char*的向量.使用以下代码,按预期输出为

ABC_
DEF
HIJ
Run Code Online (Sandbox Code Playgroud)

但我明白了

HIJ
DEF
HIJ
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

码:

#include <iostream>
#include <boost/tokenizer.hpp>
#include <vector>
#include <string>
using namespace std;

int main()
{
   string s("ABC_,DEF,HIJ");
   typedef boost::char_separator<char> char_separator;
   typedef boost::tokenizer<char_separator> tokenizer;

   char_separator comma(",");
   tokenizer token(s, comma);
   tokenizer::iterator it;

   vector<const char*> cStrings;

   for(it = token.begin(); it != token.end(); it++)
   {
      //cout << (*it).c_str() << endl;
      cStrings.push_back((*it).c_str());
   }

   std::vector<const char*>::iterator iv;
   for(iv = cStrings.begin(); iv != cStrings.end(); iv++)
   {
      cout << *iv << endl;
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/3tvnUs

编辑:解决方案帮助下面的答案:( …

c++ arrays string stdvector boost-tokenizer

2
推荐指数
1
解决办法
558
查看次数

boost :: tokenizer考虑分隔符之间没有令牌

我正在使用boost :: tokenizer来获取';' 从a分开的字段string.我可以检索下面代码中显示的字段,但我有两个问题:

  1. 是否存在任何令牌器提供的函数,以根据提供的分隔符知道字符串中的令牌数量?
  2. 假设测试字符串有3个字段a;b;c.以下代码将打印所有这些代码.但我也需要打印空字段.例如柜面字符串的a;;;b;c令牌也应该包含什么作为第二和第三元素.或者换句话说,第二和第三个标记应该是空的.
#include <boost/tokenizer.hpp>
namespace std;
namespace boost;
int main()
{
    string data="a;;;;b;c";
    boost::char_separator<char> obj(";");
    boost::tokenizer<boost::char_separator<char> > tokens(data,obj);
    cout<<endl<<tokens.countTokens();
    for(boost::tokenizer<boost::char_separator<char> >::iterator it=tokens.begin();
    it!=tokens.end();
    ++it)
    {
        std::cout<<*it<<endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-tokenizer

2
推荐指数
1
解决办法
583
查看次数

标签 统计

boost-tokenizer ×4

c++ ×4

boost ×3

arrays ×1

stdvector ×1

string ×1

tokenize ×1