[C++] 문자열 관련 함수 정리

kodaaa·2022년 10월 13일
0

코딩테스트

목록 보기
12/17
post-thumbnail

string <-> int

  • int num = stoi(str) string -> int
  • string str = to_string(num) int -> string

char -> string (ex.'a' -> "a")

char c = 'a';
string s;
s += c; //s="a"가 됨
  • 주의
string s;
s += 'a' + 'b'; //(x) 이런 식으로 char형을 한꺼번에 더하면 "ab"가 되지 않음!
s += 'a';
s += 'b'; //(o) 이런 식으로 각각 더해야 "ab"가 됨!

char -> int

char형 문자가 숫자문자(ex."1")일 때
int num = c - '0';

문자열의 문자 조회

char c = str[2];
이때 문자 1개는 char형! (string 아님)

문자열 길이

  • str.length();
  • str.size();
    둘다 같음

문자열 일부 추출

  • string str2 = str1.substr(n, m); 인덱스n(0부터 시작)부터 m개의 문자 추출
  • string str2 = str1.substr(n); 인덱스n(0부터 시작)부터 끝까지 추출

문자열 붙이기

str1 + str2;

문자열 삽입

str.insert(n, str2); 인덱스n 앞에 str2 문자열을 삽입

  • => str이 수정됨

문자열 일부 지우기

  • str.pop_back(); 맨 뒤의 문자 제거

    • 왜인지 모르겠는데 프로그래머스에서 안됨..
  • str.erase(n, m); 인덱스n(0부터 시작)부터 m개의 문자 지움

  • str.erase(n); 인덱스n부터 끝까지 지움

    • => str이 수정됨

문자열 비교

>, < 를 통해 사전순서 비교

공백 포함 문자열을 입력받기

string s;
getline(cin, s); //공백 포함 문자열 입력받기

💡 앞에 cin을 사용한 적이 있는 경우 별도 처리 필요!
버퍼에 정수값을 입력한 뒤 누른 엔터('\n')가 남아있어 getline()에 들어가기 때문

int n;
string str;
cin >> n;
cin.ignore(); //이거 넣어줘야 함
getline(cin, str);

cin을 통한 입력은 공백을 기준으로 입력을 끊기 때문에 "Hello World!"와 같이 띄어쓰기가 포함된 문자열을 받을 수가 없음

string 형태 전역변수 선언 주의

pair<string, int> input[1000];
이 형태로 전역변수 선언 시 NeverBeNull 런타임 에러 났음(vscode에서는 돌아가는데 백준에서는 에러남)
구글링 해보니까 문자열 때문에 저 오류가 뜨는 것 같으니... 문자열 사용 시
그냥 vector형으로 지역변수 선언하고 resize로 사이즈 정해서 쓰자!


https://rebro.kr/53

profile
취뽀하자(●'◡'●)💕

0개의 댓글