"C++ 문자열 교체"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 2개는 보이지 않습니다)
6번째 줄: 6번째 줄:
using namespace std;
using namespace std;


void strReplaceOnce(string& s, string const& search, string const& replace) {
void str_replace_once(string& s, string const& search, string const& replace) {
     size_t pos = s.find(search);
     size_t pos = s.find(search);
     if (pos != string::npos) return;
     if (pos == string::npos) {
        return;
    }
     s.replace(pos, search.length(), replace);
     s.replace(pos, search.length(), replace);
}
}
14번째 줄: 16번째 줄:
int main() {
int main() {
     string s = "hello world hello";
     string s = "hello world hello";
     strReplaceOnce(s, "hello", "yellow");
     str_replace_once(s, "hello", "yellow");
     cout << s; // yellow world hello
     cout << s; // yellow world hello
}
}
22번째 줄: 24번째 줄:
using namespace std;
using namespace std;


void str_replace(string& s, string const& search, string const& replace) {
void str_replace_all(string& s, string const& search, string const& replace) {
     string buf;
     string buf;
     size_t pos = 0;
     size_t pos = 0;
43번째 줄: 45번째 줄:
int main() {
int main() {
     string s = "hello world hello";
     string s = "hello world hello";
     str_replace(s, "hello", "yellow");
     str_replace_all(s, "hello", "yellow");
     cout << s; // yellow world yellow
     cout << s; // yellow world yellow
}
}
51번째 줄: 53번째 줄:
* [[C++ 문자열 find()]]
* [[C++ 문자열 find()]]
* [[C++ 문자열 replace()]]
* [[C++ 문자열 replace()]]
* [[C++ regex_replace()]]
* [[함수 stringReplace()]]
* [[함수 stringReplace()]]


[[분류: C++ 문자열]]
[[분류: C++ 문자열]]

2023년 12월 15일 (금) 19:47 기준 최신판

1 개요[ | ]

C++ 문자열 교체
#include <iostream>
using namespace std;

void str_replace_once(string& s, string const& search, string const& replace) {
    size_t pos = s.find(search);
    if (pos == string::npos) {
        return;
    }
    s.replace(pos, search.length(), replace);
}

int main() {
    string s = "hello world hello";
    str_replace_once(s, "hello", "yellow");
    cout << s; // yellow world hello
}
#include <iostream>
using namespace std;

void str_replace_all(string& s, string const& search, string const& replace) {
    string buf;
    size_t pos = 0;
    size_t prevPos;
    buf.reserve(s.size());
    while (true) {
        prevPos = pos;
        pos = s.find(search, pos);
        if (pos == string::npos) {
            break;
        }
        buf.append(s, prevPos, pos - prevPos);
        buf += replace;
        pos += search.size();
    }
    buf.append(s, prevPos, s.size() - prevPos);
    s.swap(buf);
}

int main() {
    string s = "hello world hello";
    str_replace_all(s, "hello", "yellow");
    cout << s; // yellow world yellow
}

2 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}