はじめに
ほかの言語だとsplit関数があったりしますが、C++にはないので自作して使いまわしています。
文字列とキーとなる文字を引数として与えることで、文字列の中からキーとなる文字で分割、数値型に変換してvectorに返すという関数を作りました。
特に目新しいものではないですがコピペ用に忘備録として残しておきます。
ソースコード
//自動分割(文字列,分割する文字) std::vector<float> split_float(std::string input_split, char key_split){ std::vector<float> result; //返り値 std::istringstream iss_split(input_split); //stream std::string buf_split; //一時データ //最後まで分割 while(std::getline(iss_split, buf_split, key_split)){ //vectorの最後に追加 result.push_back(std::stof(buf_split)); } return result; }
引数は文字列と、分割するキーとなる文字です。返り値はvectorです。
文字列を数値に変換しているのは「std::stof()」の部分です。
このプログラムではfloat型に変換していますが、目的に応じてこちらの関連リンクのファミリーなどを参考に「std::stof()」とvectorの要素のデータ型を変えてください。
ヘッダ
必要なヘッダは多めです。
#include <string> #include <vector> #include <fstream> #include <sstream>
最後に
最近使ったときはsstreamをヘッダに書くのを忘れて10分くらい沼りました。
コメント