0

以下のようなデータセットを持つ文字列ベクトルがあります。

vector<string> result;

<index> | <Name> | <email> | <status>

    1|duleep|dfe@gamil.com|0
    2|dasun|dasun@da.com|0
    3|sampath|lkdf@dg.lk|1
    4|Nuwan|Kandyjkj@lkj.com|0

今、私は別々のベクターデータ(名前、インデックス、ステータス)を取得したいのですが、C ++を使用してこれを行うための最良の方法を提案してください(文字列配列[4] [4]に変換するにはどうすればよいですか?)

4

1 に答える 1

1

これは、 boost::tokenizerを使用して思いついた例です(boost を使用したくない場合は、申し訳ありません)。

#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
#include <vector>
int main()
{
  std::vector<std::string> v;
  v.push_back("1|duleep|dfe@gamil.com|0");
  v.push_back("2|dasun|dasun@da.com|0");
  v.push_back("3|sampath|lkdf@dg.lk|1");
  v.push_back("4|Nuwan|Kandyjkj@lkj.com|0");

  boost::char_separator<char> sep("|");
  std::vector<boost::tokenizer<boost::char_separator<char>>> tokens;
  for (auto& s : v)
  {
    tokens.push_back({s, sep});
  }
}

を使用する場合はstd::string array[4][4]、トークンを反復処理して配列に割り当てます。

ブーストなしの別の方法は次のとおりです。

  for (auto& s : v)
  {
    std::stringstream ss(s);
    std::string token;
    while (std::getline(ss, token, '|'))
    {
        // Put token into your array here
    }
  }
于 2012-05-02T03:59:06.627 に答える