C++で文字列のsplitにstringstreamが使える気がする 

はてなブックマーク - C++で文字列のsplitにstringstreamが使える気がする
Bookmark this on Delicious

久々にtopcoderをやってみたんですが、1問しか解けませんでした。終わった時は練習しようと思うんですが、中々実行できないです。。

久々すぎて文字列のsplitすら出来なくて、そんな馬鹿なと思って調べてみると、STLのstringってsplitメソッドが無いんですね。仕方ないのでその辺のコードをコピペしたんですが、終わってから皆さんのコードを見るとstringstreamでsplitするのが、常套手段っぽくて、初めて目にしたのでメモ書きです。

#include <vector>
#include <string>
#include <iostream>
#include <sstream>
 
using namespace std;
 
int main(int argc, char* argv) {
	stringstream ss("hello std world");   // これでスペースで文字列splitできる
	string elem;
	while (ss >> elem) {
		cout < < elem << endl;
	}
 
	return 0;
}

確かにこれなら結構シンプルで良いですね。デリミタがスペースしか受け付けないので、事前にreplace処理をしておかないと駄目なのが面倒ですけど。あれ、TopCoderってboost使えないんでしたっけ。

関連する記事

タグ: ,

コメントをどうぞ