{
char str[] = "abc";
cout << str << endl; // 문자열 전체 출력
cout << str[0] << endl; // 첫 번째 문자 출력
cout << str[1] << endl; // 두 번째 문자 출력
cout << str[2] << endl; // 세 번째 문자 출력
cout << str[3] << endl; // 문자열의 마지막 문자 ('\0') 출력
cout << sizeof(str) << endl; // 배열의 크기 출력 (4, 마지막 '\0' 포함)
cout << (int)str[0] << endl; // 'a'의 ASCII 코드 값 출력
cout << (int)str[1] << endl; // 'b'의 ASCII 코드 값 출력
cout << (int)str[2] << endl; // 'c'의 ASCII 코드 값 출력
cout << (int)str[3] << endl; // '\0'의 ASCII 코드 값 출력 (0)
cout << strlen(str) << endl; // 문자열의 길이 출력 (3, '\0' 이전까지의 길이)
str[1] = '\0'; // 문자열의 두 번째 문자를 null 문자로 변경
cout << sizeof(str) << endl; // 배열의 크기 출력 (4, 변함 없음)
cout << strlen(str) << endl; // 변경된 문자열의 길이 출력 (1, '\0' 이전까지의 길이)
}
char str[] = "abc";
는 문자열 "abc"를 선언하고 초기화합니다. 배열의 크기는 4입니다. (마지막 null 문자 포함)sizeof(str)
는 배열의 크기를 출력합니다. (4)strlen(str)
는 문자열의 길이를 출력합니다. (3){
char str[100] = "hello";
cout << (int)str[99] << endl; // "hello" 뒤의 나머지 값은 '\0'
}
char str[100] = "hello";
는 문자열 "hello"를 선언하고 초기화합니다.str[99]
의 값을 출력합니다. 초기화되지 않은 나머지 부분은 모두 null 문자('\0')로 채워집니다.{
char str0[] = "hello";
char str1[] = "hello";
// 비교가 제대로 안 됨. 주소 값 비교임
if (str0 == str1)
cout << "true" << endl;
// 같으면 0 다르면 -1 또는 1
int result = strcmp(str0, str1);
cout << result << endl;
}
char str0[] = "hello";
와 char str1[] = "hello";
는 두 개의 문자열을 선언하고 초기화합니다.str0 == str1
는 문자열의 주소를 비교하므로 올바르지 않습니다.strcmp(str0, str1)
는 문자열을 비교하고 결과를 반환합니다. 같으면 0, 다르면 -1 또는 1을 반환합니다.{
// 문자열 복사
char str0[100];
char str1[] = "hello";
strcpy(str0, str1);
}
char str0[100];
과 char str1[] = "hello";
를 선언하고 초기화합니다.strcpy(str0, str1);
를 사용하여 str1
의 내용을 str0
에 복사합니다.{
// 문자열 붙이기
char str0[100] = "hello";
char str1[] = "world";
strcat(str0, str1);
}
char str0[100] = "hello";
와 char str1[] = "world";
를 선언하고 초기화합니다.strcat(str0, str1);
를 사용하여 str1
의 내용을 str0
에 연결합니다.{
// 문자열을 정수로 변경
char str[] = "100";
int num = atoi(str);
}
char str[] = "100";
를 선언하고 초기화합니다.atoi(str);
를 사용하여 문자열을 정수로 변환합니다.{
// 문자열을 실수로 변경
char str[] = "1.1";
float num = atof(str);
}
char str[] = "1.1";
를 선언하고 초기화합니다.atof(str);
를 사용하여 문자열을 실수로 변환합니다.{
// 정수를 문자열로 변경
int num = 100;
char str[100];
sprintf(str, "%d", num);
}
int num = 100;
을 선언하고 초기화합니다.sprintf(str, "%d", num);
를 사용하여 정수를 문자열로 변환합니다.{
char str[6];
// 5개 이상의 문자열을 입력 받게 되면 문제
// 공백이 있는 경우 공백 앞까지만 입력 받음(a b 라고 입력하면 a만 받음)
// cin >> str;
// 5개만 입력을 받고 개행 문자까지만 받음
cin.getline(str, 6);
cout << str << endl;
}
char str[6];
를 선언합니다.cin.getline(str, 6);
를 사용하여 최대 5개의 문자를 입력받고 null 문자('\0')를 추가합니다.C 스타일 문자열은 char
배열로 구현되며, 문자열의 끝은 항상 null 문자('\0')로 표시됩니다. 문자열의 길이는 strlen
함수를 사용하여 측정할 수 있으며, 배열의 크기는 sizeof
를 사용하여 확인할 수 있습니다. 문자열 비교는 strcmp
를 사용하며, 문자열 복사와 연결은 각각 strcpy
와 strcat
을 사용합니다. 문자열과 정수/실수 간의 변환은 atoi
, atof
, sprintf
등을 사용하여 수행할 수 있습니다. cin.getline
을 사용하여 안전하게 문자열을 입력받을 수 있습니다. C 스타일 문자열은 다루기 쉽지만, 메모리 관리와 경계 검사를 철저히 해야 합니다. C++에서는 std::string
을 사용하는 것이 더 안전하고 편리합니다.