-
[C++] 문자열(string)C++/class 2022. 6. 9. 16:25
C++에서 문자열을 나타내는 방법
1. 문자 배열을 생성해서 문자열을 저장하고, 맨 끝에 NULL문자를 추가하는 방법
2. string 클래스를 사용하는 방법(추후)
a 'a' "a" 변수 a 하나의 문자,
아스키 코드값과 같음문자열,
끝에 NULL문자 추가됨
문자 배열의 초기화
char str[6] = "HELLO";
1. 문자열 상수를 할당하면 컴파일러가 자동으로 끝에 NULL 문자 추가
2. 배열의 크기는 문자열보다 +1 되어야 함(NULL 문자)
문자열의 길이를 구하는 프로그램
cout << "\n문자열의 길이 구하기\n"; char strCount[80] = "C++ is very easy to me"; int x = 0; while(strCount[x] != '\0'){ x++; } cout << "문자열의 길이는 " << x << "입니다.";
1. 문자열의 끝에 NULL문자('\0')을 만나기 전까지 x의 값 1씩 증가시킨다.
2. 라이브러리 함수로도 값을 구할 수 있다.
// #include <cstring> 필요
cout << "문자열 " <<str3 << "의 길이는 " << strlen(strCount) <<"입니다\n" << endl;
문자열 라이브러리 함수
함수 설명 strlen(s) 문자열 s의 길이를 구한다 strcpy(s1, s2) s2를 s1에 복사한다(방향 주의!) strcat(s1, s2) s2를 s1의 끝에 붙여넣는다 strcmp(s1, s2) s1과 s2를 비교한다 strchr(s, c) 문자열 s 안에서 문자 c를 찾는다 strstr(s1, s2) 문자열 s1에서 문자열 s2를 찾는다 [TIP] strcpy_s를 쓰는 게 좋다(자리수가 다른 경우 미리 검사)
문자열의 복사
1. looping 이용
2. 라이브러리 함수 이용
[Key Point]
// #1-1. str20, str5 문자열의 길이 구하기
int length1 = strlen(str20);
int length2 = strlen(str5);
// #1-2. str20 문자열 뒤에 str5 문자열 합치기
for (int i = 0; i<length2; i++){
str20[length1] = str5[i];
length1++;
}
// #1-3. 합쳐진 문자열 끝에 NULL 문자 추가하기
str20[length1] = '\0';
// // 문자열 // // Created by yeonsu on 2022/06/09. // #include <iostream> using namespace std; int main(){ // 문자열 합치기 cout << "\nstrcat: 문자열 합치기" << endl; // "digital" + "media" char str20[21] = "digital"; // 한글 10글자까지 저장 가능 char str5[6] = "media"; cout << "\nstr20: " << str20 << endl; cout << "str5: " << str5 << endl << endl; // str20 = str20 + "media"; // a += b; 처럼 '+'연산자를 이용해서 합칠 수 없다. // #1. loopig 이용해서 문자열 합치기 cout << "#1. loopig 이용해서 문자열 합치기" << endl; // #1-1. str20, str5 문자열의 길이 구하기 int length1 = strlen(str20); int length2 = strlen(str5); // #1-2. str20 문자열 뒤에 str5 문자열 합치기 for (int i = 0; i<length2; i++){ str20[length1] = str5[i]; length1++; } // #1-3. 합쳐진 문자열 끝에 NULL 문자 추가하기 str20[length1] = '\0'; cout << str20 << endl; // #2. 함수를 이용해서 문자열 합치기 cout << "\n#2. 함수를 이용해서 문자열 합치기" << endl; char str21[22] = "digital"; cout << strcat(str21, str5) << endl << endl; return 0; }
문자열의 비교
[결과값]
음수: s1 < s2
0: s1 == s2
양수: s1 > s2
// 문자열의 비교 cout << "\n문자열의 비교" << endl; cout << "\n#1. 일반적인 방법\n" << endl; char str1[5] = "PINK"; char str2[6] = "BROWN"; cout << "str1: " << str1 << endl; cout << "str2: " << str2 << endl << endl; if(str1 == str2){ cout << "같습니다."<<endl; } else cout << "다릅니다." <<endl; cout << "\n#2. 함수를 이용하는 방법" << endl; if(strcmp(str1, str2) == 0){ cout << "같습니다." << endl; } else cout << "다릅니다." << endl;
문자열 속에 문자
strchr(str, c)의 반환값: 문자의 시작 주소 반환
미발견시 NULL 주소값 (0) 반환
cout << "\nstrchr: 문자열 속의 문자" << endl; char str3[] = "a"; strcpy(str3, "digital"); strchr(str3, 't'); //str3 속에 't'문자가 있는가? // strchr을 통해 주소값을 반환받음 -> 포인터 활용 char *p; p = strchr(str3, 't'); if (p==NULL) cout << "존재하지 않습니다." << endl; else cout << p << endl; //tal 출력
문자 처리 라이브러리 함수
//문자 처리 라이브러리 함수 cout << "\n문자 처리 라이브러리 함수" << endl; char c = 'A'; if(isupper(c)) cout << "대문자입니다." << endl; else cout << "대문자가 아닙니다." << endl;
출력 결과
'C++ > class' 카테고리의 다른 글
[C++] 클래스에 대한 이해(Car.cpp) (0) 2022.06.24 [C++] 함수가 여러 개의 값을 반환해야하는 경우 (0) 2022.06.15 [C++] 외부 파일에서 데이터 읽어오기(fstream, infile) (0) 2022.06.14 class_lab11.cpp 참조에 의한 호출 (0) 2022.06.08 class_lab10.cpp 포인터의 개념 (3) 2022.05.25