文字列操作メモ

追加

文字追加

std::string str;       // 空の文字列を生成
str.push_back('Z');     // 末尾に 'Z' を追加
str += '0';     // 末尾に '0' を追加
std::cout << str << "\\n";

文字列追加

std::string str("xyz");
str = "12" + str;        //  str の先頭に "12" を挿入と同じ
std::cout << str << "\\n";

削除

最後の文字を削除

std::string str("12345");
str.pop_back();    //  末尾文字(この場合は '5')を削除
std::cout << str << "\\n";

任意の位置の文字を削除

std::string str("01234");
str.erase(str.begin() + 2);       //  3番目の要素('2')を削除
std::cout << str << "\\n";

firstからlastの文字を一度に削除

std::string str("01234");
str.erase(str.begin() + 2, str.begin() + 4);       //  '2', '3' を削除
std::cout << str << "\\n";

分割

区切り文字(delim)で分割するコード

// split
inline std::vector<std::string> split(const std::string str, const std::string delim) {
  std::vector<std::string> out;
  size_t start;
  size_t end = 0;
  while ((start = str.find_first_not_of(delim, end)) != std::string::npos) {
    end = str.find(delim, start);
    out.push_back(str.substr(start, end - start));
  }
  return out;
}

使用例

auto out = split("a/b/c","/");
/*
out.size() = 3
out[0]="a"
out[1]="b"
out[2]="c"
*/

変換