質問

文字列トークナイザーがあることは知っていますが、「int トークナイザー」はありますか?

たとえば、文字列「12 34 46」を分割して次のようにしたいとします。

リスト[0]=12

リスト[1]=34

リスト[2]=46

特に、Boost::Tokenizer がこれを行うかどうか疑問に思っています。ただし、文字列を使用しない例は見つかりませんでした。

役に立ちましたか?

解決

はいある:例えば、ストリームを使用stringstreamます:

stringstream sstr("12 34 46");
int i;
while (sstr >> i)
    list.push_back(i);

また、あなたはまた、コンストラクタと組み合わせたSTLアルゴリズムおよび/またはイテレータアダプタを使用することができます:

vector<int> list = vector<int>(istream_iterator<int>(sstr), istream_iterator<int>());

他のヒント

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;
}

さらに多くの例が見つかります ここ

注記:解析プロセスは、 非常に 高速かつ効率的で、stdlib や boost ベースのソリューションも顔負けです。

あなたが探しているのは2つの独立したアクションです。最初の文字列をトークン化し、intに各トークンを変換します。

私は

...あなたがする必要があるので、あなたが文字列またはchar *を使用せずにこれを行うことができるかどうかわからないが、数字とスペースの両方に同じセットに
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top