C/C++에서 문자열(String)에 대해 설명하고, 이를 이해하기 위한 다양한 방식을 제공하겠습니다. C와 C++에서 문자열을 처리하는 방법은 다르기 때문에 각각의 방법을 설명합니다.
C에서는 문자열을 문자 배열(char array)로 표현하며, 문자열의 끝을 표시하기 위해 널 문자('\0')를 사용합니다.
#include <stdio.h>
int main() {
char str1[] = "Hello, World!";
char str2[20] = "Hello";
char str3[20];
// 문자열 복사
strcpy(str3, str2);
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}
strcpy - 문자열 복사strcat - 문자열 연결strlen - 문자열 길이strcmp - 문자열 비교C++에서는 표준 라이브러리의 std::string 클래스를 사용하여 문자열을 보다 쉽게 다룰 수 있습니다.
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello, World!";
std::string str2 = "Hello";
std::string str3;
// 문자열 복사
str3 = str2;
std::cout << "str1: " << str1 << std::endl;
std::cout << "str2: " << str2 << std::endl;
std::cout << "str3: " << str3 << std::endl;
return 0;
}
length() - 문자열 길이 반환substr() - 부분 문자열 반환find() - 문자열 내 특정 문자열 찾기compare() - 문자열 비교append() - 문자열 연결문자열의 각 문자에 접근하기 위해 인덱스를 사용합니다. 이는 기본적으로 포인터 산술을 통해 구현됩니다.
문자열의 메모리 구조를 이해하기 쉽게 그림과 표로 표현하였습니다.
C 문자열 메모리 구조:
char str[] = "Hello";
+---+---+---+---+---+---+
| H | e | l | l | o | \0|
+---+---+---+---+---+---+
C++ 문자열 메모리 구조:
std::string str = "Hello";
+---+---+---+---+---+
| H | e | l | l | o |
+---+---+---+---+---+
다양한 상황에서 문자열을 사용하는 예제를 추가로 제공합니다.
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[] = ", World!";
char str3[50];
// 문자열 연결
strcat(str1, str2);
// 문자열 길이
int len = strlen(str1);
// 문자열 복사
strcpy(str3, str1);
// 문자열 비교
int cmp = strcmp(str1, str3);
// 결과 출력
printf("Concatenated String: %s\n", str1);
printf("Length of String: %d\n", len);
printf("Copied String: %s\n", str3);
printf("Comparison Result: %d\n", cmp);
return 0;
}
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2 = ", World!";
std::string str3;
// 문자열 연결
str1 += str2;
// 문자열 길이
int len = str1.length();
// 문자열 복사
str3 = str1;
// 문자열 비교
int cmp = str1.compare(str3);
// 결과 출력
std::cout << "Concatenated String: " << str1 << std::endl;
std::cout << "Length of String: " << len << std::endl;
std::cout << "Copied String: " << str3 << std::endl;
std::cout << "Comparison Result: " << cmp << std::endl;
return 0;
}
문자열은 C에서는 char 배열로, C++에서는 std::string 클래스로 표현됩니다. C에서는 문자열을 처리하기 위해 다양한 표준 라이브러리 함수를 사용하며, C++에서는 std::string 클래스가 제공하는 메소드를 통해 문자열을 쉽게 조작할 수 있습니다. 운영체제는 메모리 할당과 해제를 관리하여 프로그램이 효율적으로 문자열을 사용할 수 있도록 돕습니다.
이와 같은 내용을 통해 C/C++의 문자열에 대해 더 깊이 이해할 수 있을 것입니다. 추가로 궁금한 사항이 있으면 알려주세요!