결과값이 1 0 0 2 0 3 과 같이, 중간에 공백이 포함된 글자를 출력하는 것인데 이를 반복문으로 공백처리해서 출력할 수 있겠지만, output문을 간결하게 하고 싶었다.
String에 한번에 넣으려고 하는 과정에서 조사하게 되었당.
c++ 입출력 방법인 cin, cout으로 입출력이 가능하다. getline함수도 이용이 가능하다!
C에서 사용하던 scanf, printf는 사용이 불가능하다.
| 함수 | 기능 |
|---|---|
| string str; | 빈 문자열 str 생성 |
| string str = "abcdef"; | "abcdef" 로 선언된 str 생성 |
| string str; str = "abcdef" | "abcdef" 로 선언된 str 생성 |
| string str2(str1); | str1 문자열을 복사한 str2 생성 |
| char s[ ] = {'a', 'b', 'c', 'd', 'e', 'f'}; string str(s); | C에서의 문자열과 호환 가능 |
| string *str = new string("abcdef"); | new를 이용한 동적할당 |
<, >, ==, + 등과 같은 연산자를 사용할 수 있다.
string str1 = "abcdef";
string str2 = "bbbbbb";
string str3 = "aaaa";
string str4 = "abcdef";
cout << (str1 < str2) << ' ' << (str1 < str3) << ' ' << (str1 == str4);
//1 : true , 0 : false
str1 += "A";
cout << str1 << '\n';
str1 = str1 + str2;
cout << str1 << '\n';
출처: https://rebro.kr/53 [Rebro의 코딩 일기장:티스토리]

str1보다 str2가 사전 순서가 더 느리기 때문에 true(1)를 반환, str3은 사전 순서가 str1보다 더 빠르기 때문에 false(0)를 반환, str1과 str4는 문자열이 동일하기 때문에 true(1)를 반환하는 것을 볼 수 있다.
또 str1에 "A"를 더해주게 되면 "A"가 str1 맨 뒤에 붙게 되고, str2를 더해주면 str2가 str1의 맨 뒤에 붙게 되는 것도 볼 수 있다.
이처럼 C에서의 문자열보다 훨씬 간편하게 두 문자열에 대한 연산을 할 수 있다.
| 함수 | 기능 |
|---|---|
| str.at(index) | index 위치의 문자 반환. 유효한 범위인지 체크 O |
| str[index] | index 위치의 문자 반환, 유효한 범위인지 체크 X. 따라서 at 함수보다 접근이 빠름 |
| str.front() | 문자열의 가장 앞 문자 반환 |
| str.back() | 문자열의 가장 뒤 문자 반환 |
| 함수 | 기능 |
|---|---|
| str.length() | 문자열 길이 반환 |
| str.size() | 문자열 길이 반환 (length와 동일) |
| str.capacity() | 문자열이 사용중인 메모리 크기 반환 |
| str.resize(n) | string을 n의 크기로 만듬. 기존의 문자열 길이보다 n이 작다면 남은 부분은 삭제하고, n이 크다면 빈 공간으로 채움 |
| str.resize(n, 'a') | n이 string의 길이보다 더 크다면, 빈 공간을 'a'로 채움 |
| str.shrink_to_fit | str의 capacity가 실제 사용하는 메모리보다 큰 경우 낭비되는 메모리가 없도록 메모리를 줄여줌 |
| 함수 | 기능 |
|---|---|
| 함수 | 기능 |
|---|---|