3. 복합 데이터형(3) - string 클래스

WanJu Kim·2022년 10월 9일
0

C++

목록 보기
9/81

문자 배열을 사용하는 대신에 string 클래스를 사용하면 훨씬 편하다. string 클래스는 std 이름 공간 안에 속해있다. 특징들을 알아보자.

#include <iostream>

using namespace std;

int main()	
{
	string str1 = "Have a nice day!";	// 초기화 방법.
	string str2;	// 단순 선언.

	cout << str1 << endl;
	cout << str1[2] << endl;
}

실행 결과.

초기화 하기도 쉽고 배열처럼 쉽게 접근도 가능하다. 문자 배열과의 큰 차이점은 배열로 선언할 필요가 없다는 점이다. 또한 대입 및 결합이 가능하다.

	string str1 = "Have";
	string str2 = " a";
	string str3 = " nice day";
	string str4 = str3;		// 대입.
	string str5 = str1 + str2 + str4;	// 결합.

	cout << str4 << endl;
	cout << str5 << endl;

실행 결과.

대입과 결합이 제대로 되었다. string을 사용하지 않으면 strcpy()와, strcat()같은 함수를 이용했어야 했다.

	char char1[20] = "Have a";
	char char2[20] = " nice day";
	char char3[20];

	strcpy_s(char3, char1);	//char3에 char1을 대입한다.
	strcat_s(char3, char2);	//char3끝에 char2를 더하기.

	cout << char3 << endl;

실행 결과.

카운팅 할 때도 char와 string은 차이를 보인다. char은 c에 있는 함수를 이용한다. string은 string 내부에 있는 함수를 이용한다.

int stringlength = str1.size()	//string 문자열의 길이를 구한다.
int charlength = strlen(charr1)	//char 배열의 길이를 구한다.

다음은 문자열을 대입이 아니라 입력하는 방식으로 넣어보겠다.

#include <iostream>
#include <string>

using namespace std;

int main()	
{
	char charr[20];
	string str1;

	cout << "입력 이전 charr 길이 : " << strlen(charr) << endl;
	cout << "입력 이전 str1 길이 : " << str1.size() << endl;
	
	cout << "문자열을 입력하세요" << endl;
	cin.getline(charr, 20);	// char 배열 입력.
	cout << "입력한 텍스트 : " << charr << endl;

	cout << "문자열을 입력하세요" << endl;
	getline(cin, str1);	// string 입력.
	cout << "입력한 텍스트 : " << str1 << endl;

	cout << "입력 이후 charr 길이 : " << strlen(charr) << endl;
	cout << "입력 이후 str1 길이 : " << str1.size() << endl;
}

실행 결과.

포인트는, 초기화 되지 않은 배열에는 널문자가 랜덤으로 들어가 있어서 charr 배열의 크기가 저렇게 되었다. 독자가 저 코드를 입력했을 때는 다른 크기가 나올 수도 있다. 대신 string은 초기화 되지 않으면 크기가 0이다.
또한 입력에 있어서 약간 다른 함수를 사용하였는데, 이는 charr 배열은 크기가 20으로 제한이 되있는 반면, string은 그렇지 않기 때문이다.

profile
Question, Think, Select

0개의 댓글