読者です 読者をやめる 読者になる 読者になる

C++1y 文字列のjoin

C++

N3594 std::join(): An algorithm for joining a range of elements


コンテナを、指定した区切り文字を付けれ文字列化するjoin()関数が提案されています。

// カンマ区切りの文字列にする
vector<string> v = {"a", "b", "c"};
string s = join(v, ",");

assert(s == "a,b,c");
// 要素はintでもdoubleでも、文字列化できるならOK
vector<int> v = {1, 2, 3};
string s = join(v, ",");

assert(s = "1,2,3");


ちなみにBoostには、Boost.StringAlgoライブラリにjoin()関数があります。こちらが扱えるのは、stringのRangeだけですね。ただし、戻り値の文字列型としては、Boostの方がwstringでも扱える設計なのに対し、現状のstd::join()の提案はstd::stringだけです。
Function template join - Boost String Algorithms Library