💻코딩테스트/참고자료

[참고자료] 문자열 유용한 함수 정리

공대 컴린이 2023. 7. 26. 14:45
728x90

[ 띄워쓰기를 포함하여 Enter 칠 때까지 문자열 입력받기 ]

cin.getline(변수 주소, 최대 입력 가능 문자수, 종결 문자);
ex) cin.getline(str, 100);

 

getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자);
ex) getline(cin, str);

 

@ 주의사항: cin >> int형 변수; 을 사용하고 나서 바로 getline(cin, str); 을 사용하면 getline에서 문자열을 입력받지 않고 바로 다음 코드로 넘어간다.

이유: 버퍼에 정수 값을 입력한 뒤 누른 엔터('\n')가 그대로 남아있어 getline()에 들어가기 때문

따라서 cin.ignore() 함수를 사용하여 입력 버퍼의 모든 내용을 제거해줘야 getline 함수가 정상적으로 동작

int n;
string str;
cin >> n;
cin.ignore();
getline(cin, str);

 

[ 특정 문자열을 기준으로 잘라 vector에 저장하기 ]
#include <sstream> 추가
stringstream ss(문자열 str);
string temp; // 저장될 문자 단위?

vector<string> strVector;
while(getline(ss, temp, ' ')) // 맨 마지막에 나눌 단위

    strVector.push_back(temp);

[ 문자열 치환 방법 ]
1. replace 사용
- str.replace(0, 2, "st"); // 구간을 매개변수로 주고 치환문자를 준다
2. regex_replace 사용
- #include <regex> 추가
- regex_replace(str, regex("바꿀문자열"), "사용할 문자");
ex) string str = "aaa zzz";
regex_replace(str, regex("a"), "z");
-> str = "zzz zzz";

 

[ 문자열 소문자/대문자 변환 방법 ]

#include <string>

소문자 변환 : char changeWord = tolower(word);

대문자 변환 : char changeWord = toupper(word);

 

[ 문자열 뒤집기 ]

#include <algorithm>

string str = "123";

reverse(begin(str), end(str));

결과: 321

 

[ 문자열 맘대로 정렬하기 ]

1. vector<string> 정렬

- #include <algorithm> 헤더 추가

sort(strings.begin(), strings.end(), comp(비교함수명 넣기));

 

bool comp(string str1, string str2)
{
    return str1[N] < str2[N];    // 알파벳 사전순 정렬
}

- 비교함수를 작성해서 넣어주면 된다.

 

2. priority_queue, set 정렬

- priority_queue<string, vector<string="">, MyCompare> pq;</string,>

- set<string, MyCompare> s;

 

struct MyCompare
{
         bool operator() (string s1, string s2)
         {
                 return s1.length() > s2.length();    // 문자열 길이 정렬
         }
};

728x90