在boost :: char_separator中使用space作为分隔符

时间:2013-06-16 07:14:30

标签: c++ boost

我只是想用Boost来标记一段时间。 我想输入5:00 PM并输出<5> <00> <PM>。 问题是我尝试了各种各样的东西,但它只输出<5> <00>。 但是,如果我输入5:00PM,我会得到输出<5> <00PM>。如何将提升接受空间作为一个标记(旁边:)?当PM与00从空间分开时,它只是继续抛出PM。

#include "stdafx.h"
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
#include <stdlib.h>
#include <boost/algorithm/string.hpp>
using namespace std;
int main(){

    string str1;
cin >>  str1;

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

boost::char_separator<char> sep(":\t ");

string t1 (str1);
tokenizer tokens1(t1, sep);
  for (tokenizer::iterator tok_iter = tokens1.begin();
   tok_iter != tokens1.end(); tok_iter++)
  {cout << "<" << *tok_iter << "> ";}



system("pause");
return 0;
}

1 个答案:

答案 0 :(得分:1)

  

当PM与00从一个空格分开时,它只是不断抛出PM。

这不是扔。 PM中不存在str1,因为std::cin也使用空格作为分隔符。取代

cin >>  str1;

使用

std::getline(std::cin, str1);