C++ String ์๊ณ ๋ฆฌ์ฆ์์ ์์ฃผ ์ฐ์ด๋ ๋ฉ์๋
2023. 2. 6. 22:48ใ๐ Algorithm/๐ C++ ๋ฌธ์ ํ์ด
๋ฐ์ํ
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';
๋ฐ์ํ
'๐ Algorithm > ๐ C++ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C++ ๋์ ํฉ (0) | 2023.02.10 |
---|---|
C++ ์์ด(permutation)๊ณผ ์กฐํฉ(combination) (0) | 2023.02.01 |
0. C++ ์ ์ถ๋ ฅ (0) | 2023.01.27 |