문자열 함수 정리
- String과 char 배열을 각각 보기 쉽게 정리하고자 노력했습니다.
- 알고리즘 스터디를 진행하다 보니 생각보다 string을 사용하는 경우가 많더라구요. 원래 char를 주로 사용했었기에 헷갈려서 한번 깔끔하게 정리!
- 2020년 9월 02일 초안!
Char 문자열 |
|
char배열 [헤더파일] c : string.h, c++ : #include <cstring> |
|
임의접근 가능 |
- 가능! |
strtok(str, delimiter) |
- delimiter로 문자열을 나누는 함수 |
- null일때까지 앞에 토큰 반환, 더없다면 null출력 |
|
- strtok(str,”,”); 이후에는 끝날 때까지 str(NULL,”,”);으로 사용하면 된다. |
|
- 구분자를 한번에 여러 개 넣을 수도 있다. (예시 : “+-= ”) |
|
strcmp(str1, str2) : - |
- 앞에 것(str1)에서 뒤에 것(str2)를 빼는 형식 -1,0,1(뒤에 문자가 크면 마이너스) |
strcpy(str1, str2) : = |
- str1이 str2로 바뀜 |
strcat(str1, str2) : += |
- strcat(abc\n, def\n) => abcdef\n |
- str1이 바뀐다. |
|
Strstr(str1,str2) |
- str1에서 str2 검색 |
- 찾고자 하는 문자열이 발견된다면 첫번째 위치의 포인터를 반환 |
|
- 없다면 NULL |
|
strlen(str) : 사용시 주의 |
- for(int i=0;i<strlen(str);i++) //이렇게 사용하지 말것 strlen쓸때마다 for문이 수행되어 성능에 매우 악 영향을 미침 대안: len = strlen(str); |
기타 |
|
str[i] !=0 |
(null의 아스키코드 값은 0) |
atoi |
- atoi(“123”) = 123 - atoi(“-123”) =- 123 - atoi(“123abc”) = 123 atoi(“abc123”) = 0 //앞에서부터 문자를 처리하기 때문에 앞의 값이 문자면 0으로 return됨 [헤더파일] c : <stdlib.h>, c++ : <cstdlib>에 존재 |
String |
|
[헤더파일] #include <string> |
|
str.c_str() |
- string을 char 배열로 바꿔주는 함수 |
str.compare(str2) |
- str와 str2가 같은 지 아닌지 확인 |
str.at(n) |
- 인덱스에 해당하는 문자를 반환(char) |
- 범위 검사를 하여 넘어가는 경우 예외를 반환 |
|
Str[n] |
- at함수와 동일한 결과 반환 |
- 범위 검사를 하지 않아 예외를 반환하지 않음 |
|
Str.size() |
- 객체의 사이즈(크기)를 나타낸다. |
Str.length() |
- 문자열의 길이를 나타낸다. |
- 더 느린 것으로 알고 있음(반복문으로 구현 되어 있다.) |
|
Str.capacity() |
- 할당된 메모리의 크기 |
- 동적인 객체이기에 size에 비해 메모리 할당이 여유롭다. |
|
Str.clear() |
- 문자열을 지우는 함수 |
- Size,length는 0 |
|
- Capacity는 그대로 |
|
Str.empty() |
- 비었는지 확인하는 함수 |
Str.replace(index,len,str2) |
- index부터 len의 길이 만큼str로 대체 |
str.erase(n,m) |
- n번째로부터 m개 문자 삭제 |
Str.substr(pos,count) |
- pos(위치)에서부터 count(개)를 잘라서 반환 |
atoi(str.c_str()) |
- [헤더파일] c : <stdlib.h>, c++ : <cstdlib>에 존재 |
'IT > C(C++)' 카테고리의 다른 글
[C언어] 배열 VS 포인터 (0) | 2021.07.08 |
---|---|
[C++] STL container 간단 정리 (0) | 2020.07.07 |