C++을 사용하다보면 문자열을 특정 문자열의 문자열만 출력하고 싶은 경우가 있다 이번 글에선 문자열의 특정 범위를 출력하는 법에 대해 알아볼 것이다
substr 메서드 사용하기
문자열의 특정 범위를 출력하는 방법은 크게 세 가지가 있는데 첫 번째로는 std::string 클래스의 substr 메서드를 사용해서 출력하는 방법을 알아볼 것이다
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
std::string part = str.substr(0, 5); // "Hello"만 추출
std::cout << part << std::endl; // "Hello" 출력
return 0;
}
위와 같이 문자열에 substr 메서드를 사용하면 되는데 substr 메서드의 사용법은 시작 인덱스와 끝 인덱스+1을 넣어주면
해당 범위에 문자열이 추출된다
문자열을 순회하기
두 번째 방법은 문자열을 순회하여 출력하는 방법으로 반복문을 사용해서 출력할 수 있다
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
for (int i = 0; i < 5; ++i) { // 첫 5글자만 출력
std::cout << str[i];
}
std::cout << std::endl;
return 0;
}
위 코드처럼 반복문으로 문자열에 추출하고 싶은 특정 범위를 설정한 뒤 문자열에 인덱스로 접근하여 문자만 추출한 뒤 차례 차례 출력하는 방법으로 특정 범위의 문자열을 추출할 수 있다
erase 메서드 사용하기
잘 사용되는 방식은 아니지만 erase 메서드를 사용해서 출력하는 방법도 있다 erase 메서드는 특정 범위를 지우는 메서드로 시작 위치와 시작으로부터 지울 문자의 수를 넣으면 된다 이를 응용하면
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
std::cout << str.erase(5, 8) << std::endl;
return 0;
}
이렇게 Hello를 출력할 수 있다