「;」を取得するためにboost::tokenizerを使用しています からフィールドを分離しましたstring
。以下のコードに示すようにフィールドを取得できますが、2 つの質問があります。
- 提供されたセパレーターに基づいて文字列内のトークンの数を知るためにトークナイザーが提供する関数はありますか?
- テスト文字列に 3 つのフィールドがあるとします
a;b;c
。次のコードは、それらすべてを出力します。しかし、空のフィールドも印刷する必要があります。たとえば、文字列a;;;b;c
の場合、トークンには2 番目と 3 番目の要素として何も含まれていない必要があります。つまり、2 番目と 3 番目のトークンは空にする必要があります。
#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;
}
}