[10μ£Ό μμ± C++ μ½λ©ν μ€νΈ] λ¬Έμμ΄ νμκ°λ - split(), substr(), erase()
* split(): νΉμ λ¬Έμμ΄μ κΈ°μ€μΌλ‘ μͺΌκ°λ ν¨μ.
C++ μμ μ§μνμ§ μμμ μ§μ ꡬνν΄μΌ ν¨.
* μκ°λ³΅μ‘λ: O(n)
* λμ΄μ°κΈ°λ₯Ό κΈ°μ€μΌλ‘ λ¬Έμμ΄μ μͺΌκ°λ μμ μ½λ. μκΈ° β β β β β
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> split(string input, string delimiter) {
vector<string> ret;
long long pos = 0;
string token = "";
while ((pos = input.find(delimiter)) != string::npos) {
token = input.substr(0, pos); // "μλ
νμΈμ"
ret.push_back(token);
input.erase(0, pos + delimiter.length()); // "μλ
νμΈμ "
}
ret.push_back(input);
return ret;
}
int main() {
string s = "μλ
νμΈμ λΉ΅μ΄λΉ΅μ΄μ¨, λ§λ λ₯μ§μ?", d = " ";
vector<string> a = split(s, d);
for (string b : a) cout << b << "\n";
return 0;
}
find(μ°Ύλ λ¬Έμμ΄): λ¬Έμμ΄μμ μ°Ύλ λ¬Έμμ΄μ μμΉλ₯Ό returnν¨.
string::npos: find ν¨μμμ μ°Ύλ λ¬Έμμ΄μ΄ μλ κ²½μ° string::nposλ₯Ό λ°νν¨
substr[μμμμΉ, λΆλΆ λ¬Έμμ΄ κΈΈμ΄): λ¬Έμμ΄μ μΌλΆλ₯Ό 리ν΄νλ ν¨μ. substr(0, 4) μ΄λ©΄ 0,1,2,3 κ°μ return.
erase[μμμμΉ, κΈΈμ΄): 벑ν°μ νΉμ μμλ₯Ό μ§μ°λ ν¨μ. erase(0, 5) μ΄λ©΄ 0,1,2,3,4 κ°μ μ§μ.
for(νμ μμλ³μλͺ : νμ μ λ΄μ 컨ν μ΄λ): λ²μκΈ°λ° for 루ν