#include <iostream>
#include <algorithm>
using namespace std;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0);
string s = "Time is 2020Year 03Month";
// 문자열의 길이(사이즈)
cout << s.size() << "\n";
// 문자열을 인덱스로 접근 가능
for(int i = 0; i < s.size(); i++) {
cout << s[i] << " ";
}
cout << "\n";
// 대문자 출력
for(int i = 0; i < s.size(); i++) {
if(isupper(s[i])) cout << s[i] << " ";
}
cout << "\n";
// 소문자 출력
for(int i = 0; i < s.size(); i++) {
if(islower(s[i])) cout << s[i] << " ";
}
cout << "\n";
// 숫자 출력
for(int i = 0; i < s.size(); i++) {
if(isdigit(s[i])) cout << s[i] << " ";
}
cout << "\n";
// 문자열 뒤에 문자 추가
s.push_back('s');
s += 's';
// 문자열 뒤에 문자 제거
s.pop_back();
cout << s << "\n";
// 문자열 뒤에 문자열 추가
s += " 27Day";
cout << s << "\n";
// 특정 위치에 문자열 추가 (시작 위치, 문자열)
s.insert(0, "Korean ");
cout << s << "\n";
// 특정 위치의 문자열 제거 (시작 위치, 끝 위치)
s.erase(0, 7);
cout << s << "\n";
// 특정 위치의 문자열 변환 (시작 위치, 넣을 문자열의 길이, 문자열)
s.replace(0, 5, "Today ");
cout << s << "\n";
// 문자열 추출 (시작 위치)
cout << s.substr(13) << "\n";
// 문자열 추출 (시작 위치, 찾을 문자열의 길이)
cout << s.substr(0, 5) << "\n";
// 문자열 찾기
cout << s.find("Today") << "\n"; // 시작 인덱스 반환
cout << s.find("Time") << "\n"; // string::npos 반환
// 문자열 찾기 (찾을 문자열, 시작 위치)
cout << s.find("Today", 5) << "\n";
// 문자열 찾기 (찾을 문자열, 시작 위치)
// 마지막 인덱스부터 뒤에서 검색하며 맨 처음 일치하는 위치를 반환
cout << s.rfind("Today", 5) << "\n";
// 문자열 전체 삭제
s.clear();
cout << s << "\n";
}
/* 문자열 중에서 가장 긴 단어 찾기 */
#include <iostream>
#include <algorithm>
using namespace std;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0);
string s = "It is time to study", res;
int pos, max = INT_MIN;
while((pos = s.find(' ')) != string::npos) {
string tmp = s.substr(0, pos);
int len = tmp.size();
if(max < len) {
max = len;
res = tmp;
}
s = s.substr(pos + 1);
}
if(max < s.size()) res = s;
cout << res << "\n";
}