DNF LOVE

C++문법> STL의 string에 대해 알아보자. (string과 char 배열과의 차이) 본문

Programming/C++

C++문법> STL의 string에 대해 알아보자. (string과 char 배열과의 차이)

botho 2019. 10. 23. 17:00
반응형

C++이 지원하는 STL 중에 문자열을 담고있는 string이 있다. 이것을 사용하려면 #include <string> 을 꼭 선언해주어야 한다.


1. string 선언

string str = "1234";
// 혹은
strign str2;
str2 = "1234";

 

2. 확장 및 문자열 추가

string str = "12345";
str += "6789";

// 혹은

strign str2 = "12345";
str2.append("6789");

 

3. 해당 문자열이 재할당 하지 않고도 저장할 수 있는 문자열 길이 반환,

string str = "1234";
str.capacity();

문자열은 문자열이 늘어났을 때, 현재 capacity보다 클 경우 더 큰 메모리를 사용할 수 있도록 재할당된다.

 

4. 최대한 메모리를 할당했을 경우, 저장할 수 있는 문자열 길이 반환

string str = "1234";
str.max_size();

 

5. string에 있는 특정 문자 탐색

string stl = "1234 Hello";

	cout << stl.find("12") << endl;
	// 12를 찾았으면 0 반환
	cout << stl.find("5678") << endl;
	// 5678 문자열 없으면 쓰레기값 출력

	if (stl.find("1234") != string::npos) {
		cout << "1234 문자열 찾았다!" << endl;
	}
	else {
		cout << "1234 문자열 없어요";
	}

 

6. string 간 문자열 복사

string stl = "1234 Hello";
string temp;
temp = stl;

 

7. string 간 문자열 비교

	string stl1 = "1234";
	string stl2 = "1234 Hello";

	if (stl1.compare(stl2) == 0) {
		cout << "둘은 동일한 문자열" << endl;
	}
	else if (stl1.compare(stl2) < 0) {
		cout << "stl1이 stl2보다 사전순으로 앞" << endl;
	}
	else if (stl1.compare(stl2) > 0) {
		cout << "stl1이 stl2보다 사전순으로 뒤" << endl;
	}

여기서는 stl1이 stl2보다 사전순으로 앞이다.

 

8. 특정 위치 문자 받기(JAVA에서의 charAt)

	string s = "1234 Hello";

	cout << s.at(0) << endl; // 1
	cout << s.at(s.length() - 4); // e

 


** char 배열과 비교하기

1. 길이 반환

 1) string 길이 반환

string str = "1234";
str.length(); 
stl.size();
// 위 둘은 형식만 다르지 같은 일을 하는 멤버 함수

 2) char 배열 길이 반환

char c[5];
int size = strlen(c);

 

2. 표준 입력 읽고 출력하기.

 1) string - 공백, 개행이 무시된다. cout 을 출력하기 위해서는 #include 필요, 반복문으로 배열 하나씩 출력도 가능

#include <string>

string str;
cin >> str;
cout << str << endl;

 2) char 배열 - 반복문 돌리기 혹은 배열 전체로 받아올 수 있다. 공백, 개행 무시가 가능하다.

const int index = 5;
char c[index];

// 배열 전체로 받아오기
// cin >> c;
    
for (int i = 0; i < index; i++) {
	cin >> c[i];
}

// 배열 전체로 출력
// cout << c;

for (int i = 0; i < index; i++) {
	cout << c[i] << endl;
}

 

반응형