2.06.2012

How to split a string with space in C++

C++: 文字列をスペースで分割

文字列を区切ってベクタに代入するエレガントな方法。

・コード

#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <iterator>

//------------------------------------------------------------------------------
// Split a string with space
//------------------------------------------------------------------------------
std::vector<std::string> split(std::string const& s) {
  std::istringstream iss(s);
  return std::vector<std::string>(
      std::istream_iterator<std::string>(iss),
      std::istream_iterator<std::string>());
}

int main() {
  std::vector<std::string> a = split("a dramatic turn of events");
  std::vector<std::string> b = split("1 23 456 7890");

  for (int i = 0; i < (int)a.size(); ++i) { std::cout << a[i] << std::endl; }
  for (int i = 0; i < (int)b.size(); ++i) { std::cout << b[i] << std::endl; }

  return 0;
}

・出力

a
dramatic
turn
of
events
1
23
456
7890

参考:
http://blog.goo.ne.jp/linux_ekyu/e/3a89ea531b6a0ea6997dd68238b198ce

0 件のコメント:

コメントを投稿