본문 바로가기

C++

10. 문자열 함수

1. 문자열 길이 반환

 

strlen(문자열 길이를 잴 변수) // 문자열의 길이를 재줌

char str[64] = "hello!"

int num = strlen(str);


1. int num 에 반환될 수는 6 이다.

2. char는 1바이트여서 문자 하나를 담을 수 있는데
3. 문자열을 담기 위해서 배열을 사용해줌.

4. 참고로 문자열이 6이라고 str[64]를 str[6]으로 바꿀경우 오류가 생김.
5. 이유는 hello는 6개를 소모하지만 마지막 문자열을 끝낼때 null값을 넣는다.

6. 그렇기에 필요 배열은 문자열 +1

 

2. 문자열 비교

 

strcmp(비교할 변수1 , 비교할 변수2) // 문자열 두개를 비교해줌.

char str1[64] = "abc";
char str2[64] = "abd";

int num = strcmp(str1,str2);

1. 문자열을 비교해서 오른쪽이 크면 1, 왼쪽이 크면 -1 만약 같다면 0을 반환함.

2. 그렇다면 답은 abc와 abd가 길이가 같기 때문에 0이 반환될 것 같지만

3. 답은 1이다.

4. 이유는 문자열의 길이를 보는게 아니라 문자열을 아스키코드로 보기 때문.

 

3.문자열 복사

 

strcpy_s(복사 받을 문자열,복사할 문자열) // 문자열을 복사해줌

char str[64] = "hi";
char str1[64] = "hello!"

strspy_s(str,str1);


1. strspy 가 아닌 strspy_s를 사용하는 이유는 안정성 때문이라고 한다.

2. 위와 같이 한다면 str을 출력해보면 str1이 복사되어

3. hello! 가 출력된다.

4.문자열 이어붙이기

 

strcat(붙여줄 문자열 , 이어붙일 문자열)

char str[64] = "hello ";
char str1[64] = "there!"

strcat_s(str,str1);

1. str의 문자열은 "hello there!" 이 된다.
2. strcat도 _s를 붙여준다 이유는 마찬가지로 불안해서.
3. 붙여도 str1의 문자열은 없어지지 않는다.

4. 띄어쓰기는 따로 안해주고 그냥 붙여버림. 붙이기 전에 해두자.

 

5. 문자열 자르기

 

char str[64] = "i'm on a boat!";

char* str1 = NULL;

const char* token = strtok_s(str," "&str1);

1. 대충 str 의 문자열을 " " 을 기준으로 잘라서 token에 반환해라!
2. 남는 문자열은 %str1에 반환해라!
3. 정도 되는것 같다.
4. 자른다고 str[64]의 문자열이 사라지진 않는 것 같다.

5. 죄다 잘라서 볼 수 있는 방법도 있다.

char str[64] = "i'm on a boat!";
char* str1 = NULL;

const char* token = strtok_s(str," "&str1);

while(token != NULL)
{
	cout << token << endl;
    token = strtok_s(NULL," "&str1);
}

6. 아래와 같다.
7. while 문에 들어와선 대충

8.NULL이라 자를게 없으니 " " 기준으로  &str1에서 남은걸 잘라라
9.잘린 값은 token에 반환하고 나머지는 다시 &str1 에 반환해라!

10. 라는 것 같다.
11. 아직도 이해가 힘들다

 

'C++' 카테고리의 다른 글

12. 클래스의 상속 , 오버로딩과 오버라이딩  (0) 2021.05.21
11. 클래스, 접근제어자 ,생성자 소멸자  (0) 2021.05.20
9. (간단한)포인터  (0) 2021.05.20
8. 함수  (0) 2021.05.20
7. 구조체, enum, #define  (0) 2021.05.20