3. 문자열
2022. 7. 26. 19:49ㆍ코딩테스트/C++&자료구조기본
문자열
C++에서 PS를 풀기 위해 사용되는 문자열 함수는 몇개 없습니다.
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string no = "coding is the best!";
int main(){
cout << no << "\\n";
if(no.find("coding") != string::npos){
cout << "no안에 coding있다.\n";
}
cout << no.substr(0, 3) << endl;
reverse(no.begin(), no.end());
cout << no << endl;
return 0;
}
/*
coding is the best!
no안에 coding있다.
cod
!tseb eht si gnidco
*/
reserve
가지고 있는 문자열을 뒤집어 버립니다.
이때 reverse(startpoint, endpoint)
으로 사용하게 되는데, 문자열 전체를 뒤집고 싶다면
reserve(문자열이름.begin(), 문자열이름.end())
와 같이 사용 해도 되지만 일부분만 바꾸고 싶다면,
reserve(문자열이름.begin(), 문자열이름.begin()+3
와 같이 부분만 바꿀수도 있습니다
substr
문자열을 부분만 추출합니다.문자열이름.sbstr(startindex, endindex)
로 사용하면 됩니다.
find
문자열에 어떠한 문자열이 있나 확인합니다.찾는다면 그 문자열의 index값이 반환되고, 찾지 못한다면 str::npos
를 반환하기 떄문에 조건문을 사용해서 있나 확인합니다.
조건문은 이후에 더 자세히 다루겠습니다.
split
#include <bits/stdc++.h>
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 = "안녕하세요 No.1 코딩이야기 입니다!";
string d = " ";
vector<string> a = split(s, d);
for(string b : a) cout << b << "\n";\
/*
안녕하세요
No.1
코딩이야기
입니다!
*/
}
복잡해보이겠지만 while문만 숙지하면 됩니다. 나누는 기준이 되는 delimiter를 설정하고, find 함수로 기준을 찾고 그것을 기준으로 input을 앞에서부터 지워나가면서 찾는 방법입니다. 함수를 설정하는 방식은 추후에 자세히 설명해드리겠습니다.
'코딩테스트 > C++&자료구조기본' 카테고리의 다른 글
4. 연산자 (0) | 2022.07.28 |
---|---|
2. C++ 입출력(ps관점) (0) | 2022.07.14 |
1. C++의 기본 예제와 자료형 (0) | 2022.07.08 |