ホームに戻る
文字列
// 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;
}