본문 바로가기

Programming/C++ 2

[C++] 4장. 복합 데이터형 - (3) String 클래스

반응형

3. String 클래스

 

  • 문자 배열 보다 쉽고 편하게 문자열을 저장하는 방법 
  • string 헤더 파일 추가해야 한다
  • 문자열을 하나의 데이터형처럼 취급할 수 있다.
char charr1[20];
char charr2[20] = "jaguar";

기존의 문자 배열 -> 배열의 크기를 정해줘야 하며, 선언과 동시에 초기화 한다. 또한, 배열간 대입도 불가

string str1;
string str2 = "panther";

string 객체 -> 단순한 변수로 선언, 배열의 크기는 알아서 정해주고, 배열 대입도 가능

 

  • String의 결합
string str3;
str3 = str1 + str2;
str1 += str2;

 

  • string 객체의 편리함 ( 대입 , 추가, 첨부 )
string s1 = "penguin";
string s2, s3;

s2 = s1;
s3 = s1 + s2;
s1 += s2;
s2 += "for a day";

 

str1 = str2;
strcpy(charr1, charr2);

str1 +="paste";
strcat(charr1, "juice");

int len1 = str1.size();
int len2 = strlen(charr1);

str1.size()      -> 객체.클래스 메서드

strlen(charr1) -> C스타일 함수

  • 비교
//string
str3 = str1 + str2;

//문자 배열
strcpy(charr3, charr1);
strcat(charr3, charr2);

 

  • 행 단위 입력
char charr[20];
string str;

strlen(charr);
str size();

cin.getline(charr, 20);
getline(cin, str);

->초기화 되지 않은 배열의 내용은 정의되지 않는다. [크기가 20이 아니라 엉뚱한 수가 나온다]

->strlen() 함수는 \0까지의 바이트를 카운트한다. 

->초기화 되지 않은 string 객체는 크기가 0이다.

->cin.getline(charr, 20); -> 한 행을 읽어 배열 안에 넣는 코드(getline은 클래스 매서드)

->getline(cin, str); -> 한 행을 읽어 string 객체 안에 넣는 코드

 

  • 다른 형태의 문자열 상수
    • w_char
    • char_16
    • char_32

 

반응형