2021. 2. 11. 20:44ㆍStudy/C&C++
C -style string string , std::string
코딩을 하다보면 종종 문자열을 다뤄야 하는 상황이 있다. C++ 에선 2가지 방법을 지원 하는데
C -style string string, std::string 에대해 알아보려 한다.
C -style string
C - style string 은 끝에 null을 가지는 char 형 배열이다. C++ 에서는 char 형 배열 마지막에 항상 null(''\0')을 추가해 준다.
char str[] = "1234567";
cout << sizeof(str)/ sizeof(str[0])<<endl;
이처럼 선언된 배열 str 은 길이가 7 이고 크기도 7byte (char == 1byte) 인 배열이지만
배열 크기/char크기 == 8 이 출력된다. 끝을 표현하는 문자 하나가 더 들어있다는 뜻이다(null)
cout 은 null 을 만날때까지 출력 해준다.
만약 str[7]을 건들게 되면 끝을 알리는 null 문자가 없으므로 마지막 에 이상한 값이 출력 된다.
C++ 에선 <cstirng> 헤더에서 여러 유용한 함수를 지원해 준다.
strcpy(str1, str2) : str1로 str2의 문자열 복사
strcat(str1, str2) : str1로 str2의 문자열 추가
strcmp(str1, str2) : str1 와 str2의 문자열 비교
이런 여러 함수를 지원 해 준다 해도 코드가 길어지다 보면 실수로 배열 인덱스를 넘어 접근하는경우, null 문자 삭제
등 여러 문제가 있을 수 있다.
std::string
C-style string 의 단점을 보완하여
C++에서 문자열을 사용하기 위해 지원해주는 하나의 Class 이다. <string> 헤더에 있다.
std::string 에는 null 문자가 존재하지 않는다.
capaticy, size를 따로 제공하여 오버플로 문제에서 비교적 자유롭다.
'Study > C&C++' 카테고리의 다른 글
[C++] std::cin, getline() (0) | 2021.02.22 |
---|---|
[C++]R-value Reference,move Sementics (0) | 2021.02.20 |
[C++] l-value,r-value (0) | 2021.02.14 |
[C++] Stack and Heap(feat. Memory Leak) (0) | 2021.02.11 |
[C++] Pointer vs Reference (0) | 2021.02.11 |