ホームに戻る
文字列

// double のときには + 1e-9 などをするのを忘れずに

// 数字を文字に
string ntos(long long n){
  string s;
  stringstream ss;
  ss << n;
  ss >> s;
  return s;
}

// 文字を数字に 注意:18桁程度しか対応せず
long long ston(string s){
  long long n;
  sscanf(s.c_str(), "%lld", &n);
  return n;
}

// 頭の 0 を詰める erace_top_zero
string etz(string s){
   string ret;
   int i = 0;
   
   for(;i < s.size(); i++){
   	   if(s[i] != '0')break;
   }
   
   for(;i < s.size(); i++){
   	   ret += s[i];
   }
   
   return ret;
}

// 文字の切り出し b 以上 e 以下を切り出し
// cut(1,2,"abc") は "bc" を返す
string cut(int b, int e, string &s){
  return s.substr(b, e - b + 1);
}

// 文字列 s を文字 c で分離
vector<string> split(string s, char c){
  vector<string> ret;
  string s1;
  for(int i = 0; i <= s.size(); i++){
    if(i == s.size()){
      ret.push_back(s1);
      return ret;
    }
    if(s[i] == c){
      ret.push_back(s1);
      s1 = "";
    }
    else{
      s1 += s[i];
    }
  }
}

// 文字列 a から b の文字列を c に置き換え
// abcdcd から bcd を b に置き換えると abcd になる
string replace(string a, string b, string c){
  string d;

  for(int i = 0; i < a.size();){
   int flag = 1;
   for(int j = 0; j < b.size(); j++){
    if(i + j >= a.size() || a[i + j] != b[j]){
     flag = 0;
     break;
    }
   }
   if(flag == 1){
    d += c;
    i += b.size();
   }
   else{
    d += a[i];
    i++;
   }
  }

  return d;
 }

inserted by FC2 system