π Algorithm/π C++ λ¬Έμ νμ΄
C++ String μκ³ λ¦¬μ¦μμ μμ£Ό μ°μ΄λ λ©μλ
yunakim2
2023. 2. 6. 22:48
λ°μν
using namespace std;
int main() {
string a = "love is";
a += "pain!";
a.pop_back();
cout << a << " : " << a.size() << "\n"; // love is pain : 12
cout << char(*a.begin()) << '\n'; // L
cout << char(*(a.end()-1)) << '\n'; // n
a.insert(0, "test ");
cout << a << " : " << a.size() << "\n"; // test love is pain : 17
a.erase(0, 5);
cout << a << " : " << a.size() << "\n"; // love is pain : 12
auto it = a.find("love");
if (it != string::npos) {
cout << "ν¬ν¨λμ΄ μλ€" << "\n"; // ν¬ν¨λμ΄ μλ€
}
cout << it << "\n"; // 0
cout << string::npos << "\n"; // 18446744073709551615
cout << a.substr(5,2) << "\n"; // is
return 0;
}
- += : λ¬Έμμ΄μ λ¬Έμμ΄μ λν λ μ¬μ©
- push_back() μ λ¬Έμ λ°μ λνμ§ λͺ»ν¨
- begin() : λ¬Έμμ΄μ 첫λ²μ§Έ μμ κ°λ¦¬ν€λ μ΄ν°λ μ΄ν°
- end() : λ¬Έμμ΄μ λ§μ§λ§ μμ κ·Έ λ€μμ κ°λ¦¬ν€λ μ΄ν°λ μ΄ν°
- size() : λ¬Έμμ΄ μ¬μ΄μ¦ λ°ν
- O() μκ°λ³΅μ‘λ
- str.length() : λ¬Έμμ΄ μ¬μ΄μ¦ λ°ν
- insert(μμΉ, λ¬Έμμ΄) : νΉμ μμΉμ λ¬Έμμ΄ μ½μ
- O(n) μ μκ°λ³΅μ‘λ
- erase(μμΉ, ν¬κΈ°)
- νΉμ μμΉμ ν¬κΈ°λ§νΌ λ¬Έμμ΄μ μ§μ
- O(n) μκ°λ³΅μ‘λ
- pop_back() : λ¬Έμμ΄ λμ μ§μ΄λ€
- O(1) μκ°λ³΅μ‘λ
- find(λ¬Έμμ΄) : νΉμ λ¬Έμμ΄μ μ°Ύμ μμΉλ₯Ό λ°ν
- λ¬Έμμ΄μ λͺ»μ°Ύμ κ²½μ° string::npos λ°ν
- O(n) μκ°λ³΅μ‘λ
- substr(μμΉ, ν¬κΈ°) : νΉμ μμΉμμ ν¬κΈ°λ§νΌ λ¬Έμμ΄μ μΆμΆ
- O(n) μκ°λ³΅μ‘λ
μμ€ν€ μ½λμ λ¬Έμμ΄
a ~ z κ°μ : 26
a ~ z = 97 ~ 122
A ~ Z = 65 ~ 90
λ¬Έμμ΄ -> μ«μλ‘ μΆλ ₯νκΈ°
int main() {
char a = 'a';
cout << (int)a << '\n'; // 97
cout << (int)a - 97 << '\n'; // 0
cout << (int)a - 'a' << '\n'; // 0
}
μ«μ ASCII μ½λ -> λ¬Έμμ΄λ‘ μΆλ ₯νκΈ°
cout << char(i + 97) // 'a'
cout << char(j + 65) // 'A'
μ«μλ‘λ λ¬Έμμ ++ μ¦κ° μ°μ°μλ‘ 1μ λνκ² λλ€λ©΄?
- μμ€ν€μ½λμ +1 ν κ°μ΄ λ¨!
string s = "123";
s[0]++;
cout << s << "\n"; // 223
-> s[0] ++ μΌλ‘, 223μ΄ λλ€
- μμ€ν€ μ½λ 49μμ 1μ λν κ°μΈ '50'μ΄ κ°λ¦¬ν€λ κ°μ΄ '2' μ΄λ―λ‘
- 123 μμ 223μ΄ λ μ μλ€
- λ¬Έμμ΄μμ + νλ μ°μ°μ μμ€ν€ μ½λ κΈ°λ°μΌλ‘ μνλλ€
λ¬Έμμ΄ κ±°κΎΈλ‘ λ€μ§κΈ° STL - reverse()
using namespace std;
int main(){
string a = "It's hard to have a sore leg";
reverse(a.begin(), a.end());
cout << a << '\n';
reverse(a.begin(), a.end());
cout << a << '\n';
reverse(a.begin() + 3, a.end());
cout << a << '\n';
return 0;
}
/*
gel eros a evah ot drah s'tI
It's hard to have a sore leg
It'gel eros a evah ot drah s
*/
λ¬Έμμ΄ μλ₯΄κΈ° split()
C++μμλ split ν¨μλ₯Ό μ§μνμ§ μμμ μ§μ ꡬνν΄μΌ νλ€!
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;
}
input - λ¬Έμμ΄
delimiter - ꡬλΆμ
ꡬλΆμμ μμΉλ₯Ό μ°Ύμμ input λ¬Έμμ΄μ ꡬλΆμ μ κΉμ§ μλ₯Έ ν, 'token'κ°μ λ£λλ€.
κ·Έκ±Έ ret 벑ν°μ λ£μ ν, input λ¬Έμμ΄μμ μ§μμ€λ€.
λλ¬Έμ -> μλ¬Έμ / μλ¬Έμ -> λλ¬Έμ λ³ν
λ¬Έμμ΄μμ + , - λ μμ€ν€μ½λ κΈ°λ°μΌλ‘ λμλλ―λ‘
λ¬Έμμ΄ μ체λ₯Ό λνκ±°λ λΉΌμ£Όμ΄ λ³νμ΄ κ°λ₯νλ€!
if ((str >= 'a') && (str <= 'z')) {
answer.emplace_back(str - 'a' + 'A');
} else {
answer.emplcae_back(str - 'A' + 'a');
}
λ¬Έμμ΄ μ«μ -> μ«μλ‘ λ³ν
#include <iostream>
int main() {
int num = stoi("1234"); // 1234
}
- stoi : string to integer
- stol : string to long int
- stoul : string to unsigned integer
- stoll : long long
- stoull : unsigned long long
- stof : string to float
- stod : string to double
- stold : long double
μ«μ -> λ¬Έμμ΄ μ«μλ‘ λ³ν
#include <string>
std::string s = std::to_string(10); // '10'
#include <string>
int num2 = s - '0';
λ°μν