Int tokenizer

Ste*_*eve 15 c++ tokenize

我知道有字符串标记符,但是有"int tokenizer"吗?

例如,我想拆分字符串"12 34 46"并具有:

列表[0] = 12

列表[1] = 34

列表[2] = 46

特别是,我想知道Boost :: Tokenizer是否这样做.虽然我找不到任何不使用字符串的示例.

小智 14

C++字符串工具箱库(StrTk)具有以下问题的解决方案:

#include <string>
#include <deque>
#include "strtk.hpp"

int main()
{ 
   {
      std::string data = "12 34 46";
      std::deque<int> int_list;
      strtk::parse(data," ",int_list);
   }

   {
      std::string data = "12.12,34.34|46.46 58.58";
      std::deque<double> double_list;
      strtk::parse(data," ,|",double_list);
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

更多例子可以在这里找到

注意:解析过程是EXTREMELY快速,高效,把STDLIB并提高基础的解决方案相形见绌.


Kon*_*lph 12

是的有:使用流,例如stringstream:

stringstream sstr("12 34 46");
int i;
while (sstr >> i)
    list.push_back(i);
Run Code Online (Sandbox Code Playgroud)

或者,您也可以将STL算法和/或迭代器适配器与构造函数结合使用:

vector<int> list = vector<int>(istream_iterator<int>(sstr), istream_iterator<int>());
Run Code Online (Sandbox Code Playgroud)

  • avakar:奇怪的是,*no*,你的代码不起作用.您需要使用显式构造函数(由我完成)或在其中一个参数周围包含一对额外的大括号; 否则,你的代码将*不工作 - 相反,这是一个名为`list`的函数原型的声明,返回类型为`vector <int>`.试试看! (2认同)