나만의 작은 도서관
[문자열] 일부 문자열 반환 substr(), 문자열 길이 반환 length() 본문
https://www.acmicpc.net/problem/25643
백준 25643번 문제와 같이 입력받은 문자열의 일부만이 필요한 경우가 있다.
이 때, 문자열의 일부를 반환하는 함수 substr()을 사용하여 원하는 문자열을 얻을 수 있다.
substr()
// pos: 문자의 위치, count: 반환할 문자열의 길이
basic_string substr(size_type pos = 0, size_type count = npos) const;
문자열의 pos번째 문자부터 count 길이 만큼의 문자열을 반환한다. 만약, count 길이가 문자열보다 길다면, 그 이상을 반환하지않고 문자열의 끝까지만 반환한다.
또한, pos를 입력하지 않으면 기본값인 0이 입력되고, count를 입력하지 않으면 자동으로 pos부터 문자열의 끝까지 반환한다.
substr() 함수 예제
#include <iostream>
#include <string> // string::substr(), string::length()
using namespace std;
int main() {
string s = "The box is cat";
cout << s.length() << endl; // 길이 14('\n' 제외)
// 전부 생략
cout << s.substr() << endl; // The box is cat
// 문자열 길이 생략
cout << s.substr(3) << endl; // box is cat (빈칸도 문자 취급이다.)
// 0부터 길이 3 문자열 반환.
cout << s.substr(0, 3) << endl; // The (뒤에 빈칸 없음)
// 0부터 길이 300 문자열 반환.
cout << s.substr(0, 300) << endl; // The box is cat
// 시작 위치 생략, 길이 300 문자열 반환.
cout << s.substr(, 300) << endl; // 오류. 빨간줄 떠요.
// 시작 위치 300
cout << s.substr(300) << endl; // 터미널 오류. 경고 메세지 뜹니다.
return 0;
}
length()
size_type length() const _GLIBCXX_NOEXCEPT { return _M_string_length; }
해당 문자열의 길이를 반환한다. 파라미터가 옵션으로도 존재하지 않기 때문에 선택의 여지없이 전체 문자열의 길이를 반환한다.
만약, 실수로 파라미터를 넣었다면 아래와 같이 "매칭되는 함수가 없다"며 오류가 발생하게 된다.
error: no matching function for call to 'std::__cxx11::basic_string<char>::length(int)'
length() 함수 예제
#include <bits/stdc++.h>
#define fastio cin.tie(0)->sync_with_stdio(0)
using namespace std;
int main() {
fastio;
string str = "abcde";
cout << str.length() << '\n'; // 5
}
'C++ > 문법 및 메소드(STL)' 카테고리의 다른 글
[문자열] 문자열을 정수로 stoi(), 숫자를 문자열로 to_string() (0) | 2024.03.21 |
---|---|
[문자열] str1 == str2 는 TRUE? (0) | 2023.09.10 |
[문자열] 특정 문자열 찾기 find(), 문자열 부분 교체 replace() (0) | 2023.06.24 |