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 |