티스토리 뷰

C++

문자열

yoooon1212 2024. 12. 6. 10:22

 

문자열 복사

 

배열 복사

배열은 반복문을 사용하여 복사할 수 있음

#include <iostream> 
using namespace std;

int main() {

	int arr[5] = { 1,2,3,4,5 };
	int arr_b[5];

	//arr_b = arr; 이렇게 한 번에 요소를 옮길 수는 없음. 하나하나 한칸씩 옮겨야 함.
	/*
	arr_b[0] = arr[0];
	arr_b[1] = arr[1];
	arr_b[2] = arr[2];
	arr_b[3] = arr[3];
	arr_b[4] = arr[4];
	*/

	for (int i = 0; i < 5; i++) {
		arr_b[i] = arr[i];
	}

	for (int i = 0; i < 5; i++) {
		cout << arr_b[i] << " ";
	}
	return 0;
}

 

출력 결과

 

 

문자

문자 : 문자 하나(알파벳 기준, 한글X -> 예: a, A, _, 1(숫자) 등)

문자열 : 문자들의 조합(예: apple)

 

- 문자는 char형 변수에 저장함

- char 자료형 + 배열의 조합으로 문자열 저장

 

 

"Hello!"

6개 문자 + NULL(문장의 끝을 의미)(\0) = 7개 문자 필요

- 최소한 하나만 크게 선언하면 됨

- 남은 배열 요소에는 저절로 NULL로 채워짐

- NULL : 문자열의 끝을 표시

 

 

코드 예시 1

#include <iostream> 
using namespace std;

int main() {

	char s1[7] = { 'H', 'e', 'l', 'l', 'o', '!', '\0' };
	for (int i = 0; i < 7; i++)
		cout << s1[i] << endl;

	s1[4] = 'w';

	for (int i = 0; i < 7; i++)
		cout << s1[i];
	
	return 0;
}

 

출력 결과

 

 

코드 예시 2

#include <iostream> 
using namespace std;

int main() {

	char s1[20] = "Hello!Yoojin"; // 13칸

	for (int i = 0; i < 20; i++) {
		cout << s1[i];
	}
	
	return 0;
}

 

출력 결과

 

n까지 출력한 후 자동으로 넣어준 NULL을 만나면
문자열의 끝으로 인식한 후 20까지 돌지 않아도 끝나게 됨.

 

 

 

코드 예시 3

#include <iostream> 
using namespace std;

int main() {

	char s1[] = "Hello! Yoojin Hi! Minho"; // 빈칸도 하나의 문자로 인식함

	for (int i = 0; i < 30; i++) {
		if (s1[i] == '\0') 
			break; // Null(문장의 끝)일때 for문 빠져나옴
		
		cout << s1[i]; // Null이 아니라면 출력
	}
	return 0;
}

 

출력 결과

 

 

실습 문제 1

문자열을 입력받고 해당 문자를 거꾸로 출력하세요.
#include <iostream> 
using namespace std;

int main() {

	char s1[80], s2[80];
	int count = 0;

	cout << "단어를 입력해주세요 : ";
	cin >> s1;

	cout << "입력하신 단어는 아래와 같습니다" << endl;
	for (int i = 0; i < 80; i++) {
		if (s1[i] == '\0')
			break;
		cout << s1[i];
		count++; // 글자가 몇 칸인지
	}

	cout << endl << "입력하신 단어를 거꾸로 출력하겠습니다" << endl;
	for (int i = count; i >= 0; i--) {
		/*
		s2[0] = s1[4];
		s2[1] = s1[3];
		s2[2] = s1[2];
		s2[3] = s1[1];
		s2[4] = s1[0];
		*/
		s2[count - i] = s1[i - 1]; 
		// 만약 5칸 --> count = 5, i = 5
		// s2[0] = s1[4]
		// count = 5, i = 4
		// s2[1] = s1[3]
		// i = 5,4,3,2,1
	}

	for (int i = 0; i < count; i++) {
		cout << s2[i];
	}
	return 0;
}

 

출력 결과

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

포인터의 의미와 사용 이유  (3) 2024.12.06
배열 실습 문제 모음  (1) 2024.12.06
배열의 선언과 접근 및 반복문  (0) 2024.12.05
함수의 선언 및 호출  (0) 2024.12.05
반복문(while, do while)  (0) 2024.12.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함