본문 바로가기

IT/C(C++)

[c++] 문자열 함수 정리(char 배열과 string)

반응형

문자열 함수 정리

- 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,length0

-      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