3

文字列をトークンに分割し、3 番目のトークンを文字列として返す必要があります。

次のコードがあります。

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <boost/tokenizer.hpp>
    #include <fstream>
    #include <sstream>

    using namespace std;

    main()
    {
           std::string line = "Data1|Data2|Data3|Data4|Data5"; 

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

           boost::char_separator<char> sep("|");

           tokenizer tokens(line, sep);

           for (tokenizer::iterator tok_iter = tokens.begin();
                    tok_iter != tokens.end(); ++tok_iter)

           std::cout << *tok_iter << endl;
           std::cout << "\n";
      }

このコードは、文字列を適切にトークンに分割します。たとえば、3 番目のトークンを別の文字列として保存する方法がわかりません。

ありがとう!

4

1 に答える 1

4

ループの 3 回目の反復であることがわかっている場合は、文字列に格納するだけです。std::distanceの助けを借りて、追加の変数は必要ありません。

   string str;
   for (tokenizer::iterator tok_iter = tokens.begin();
      tok_iter != tokens.end(); ++tok_iter)
   {
      // if it's the 3rd token
      if (distance(tokens.begin(), tok_iter) == 2)
      {
         str = *tok_iter;
         // prints "Data3"
         cout << str << '\n';
      }
   }
于 2013-08-30T01:22:48.430 に答える