본문 바로가기

Programming/C++ 2

[C++ 실습] 4장-03. String 클래스

반응형
#include <iostream>
#include <string>

using namespace std;
int main()
{
	char charr1[20];
	char charr2[20] = "jaguar";

	string str1;
	string str2 = "panther";

	cout << "고양이과의 동물 한 종을 입력하십시오 : ";
	cin >> charr1;
	cout << "고양이과의 또 다른 동물 한 종을 입력하십시오 :";
	cin >> str1;
	cout << "아래 동물들은 모두 고양이과입니다. \n";
	cout << charr1 << " " << charr2 << " " << str1 << " " << str2 << endl;
	cout << charr2 << "에서 세 번째 글자: " << charr2[2] << endl;
	cout << str2 << "에서 세 번째 글자: " << str2[2] << endl;

	return 0;
}

  • 문자배열을 대신하는 string클래스, 문자열을 하나의 데이터형으로
  • string 객체는 단순한 변수로 선언한다
    • 대입 가능
    • 조각의 연산 가능
    • sring str3;
    • str3= str1+str2;
    • str1 += str2;
#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s1 = "penguin";
	string s2, s3;

	cout << "string 객체를 string 객체에 대입할 수 있다. s2=s1 \n";
	s2 = s1;
	cout << "s1 :" << s1 << ", s2: " << s2 << endl;
	cout << "string 객체에 C 스타일 문자열을 대입할 수 있다. \n";
	cout << "s2 = \"buzzard\"\n"; //"를 입력하는 방법 \" ~\" 이용
	s2 = "buzzard";
	cout << "s2: " << s2 << endl;
	cout << "string 객체들을 결합할 수 있다. s3=s1+s2 \n";
	s3 = s1 + s2;
	cout << "s3: " << s3 << endl;
	cout << "string 객체들을 추가할 수 있다. \n";
	s1 += s2;
	cout << "s1+=s2 --> s1= " << s1 << endl;
	s2 += " for a day";
	cout << "s2 += \"for a day\" --> s2= " << s2 << endl;

	return 0;
}
  • string 객체의 편리함
    • strcpy_s(charr1, charr2) : 복사
    • strcat_s(charr1, charr2) : 추가
  • str3=st1+str2;
  • strcpy_s(charr3, charr1);
  • strcat_s(charr3, charr2);

#include <iostream>
#include <string>
#include <cstring>

using namespace std;
int main()
{
	char charr1[20];
	char charr2[20] = "jaguar";

	string str1;
	string str2 = "panther";

	str1 = str2;
	strcpy_s(charr1, charr2);

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

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

	cout << str1 << " 문자열에는" << len1 << "개의 문자가 들어 있다. \n";
	cout << charr1 << " 문자열에는" << len2 << "개의 문자가 들어 있다. \n";

	return 0;
}

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

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

 

#include <iostream>
#include <string>
#include <cstring>

using namespace std;
int main()
{
	char charr[20];
	string str;

	cout << "입력 이전에 charr에 있는 문자열의 길이 : " << strlen(charr) << endl;
	cout << "입력 이전에 str에 있는 문자열의 길이 :" << str.size() << endl;
	cout << "텍스트 한 행을 입력하십시오: \n";
	cin.getline(charr, 20);
	cout << "입력한 텍스트 : " << charr << endl;
	cout << "또 다른 텍스트 한 행을 입력하시오 : \n";
	getline(cin, str);
	cout << "입력한 텍스트: " << str << endl;
	cout << "입력 이후에 charr에 있는 문자열의 길이: " << strlen(charr) << endl;
	cout << "입력 이후에 str에 있는 문자열의 길이 : " << str.size() << endl;

	return 0;
}

 

-> 초기화되지 않은 배열의 내용은 정의되지 않는다.

-> strlen() 함수는 \0까지 바이트를 센다.

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

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

->getline(cin, str); : 한 행을 읽어 string 객체 안에 넣는 코드 [cin은 길이 지정자가 아니라 매개변수로 작동한다]

 

 

반응형