string의 문자들을 모두 대문자로 변경하거나 소문자로 변경하는 방법을 소개합니다.
1. string의 대문자/소문자 변환 : 직접 구현
1.1 대문자 변환
for 반복문으로 string의 모든 요소를 순회하면서 대문자 또는 소문자로 변환할 수 있습니다. std::toupper(int ch)
는 인자로 전달되는 문자를 대문자로 변경합니다.
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string str = "Hello World";
for (int i = 0; i < str.size(); i++) {
str[i] = std::toupper(str[i]);
}
std::cout << str << std::endl;
return 0;
}
Output:
HELLO WORLD
1.2 소문자 변환
다음 코드는 std::tolower(int ch)
를 사용하여 string을 소문자로 변환하는 예제입니다.
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string str = "Hello World";
for (int i = 0; i < str.size(); i++) {
str[i] = std::tolower(str[i]);
}
std::cout << str << std::endl;
return 0;
}
Output:
hello world
2. string의 대문자/소문자 변환 : transform, toupper(), tolower()
std::transform()
과 toupper(), tolower()를 함께 사용하여 string을 대문자, 소문자로 변환할 수 있습니다.
transform()은 transform(first, last, d_first, unary_op)
처럼 인자를 받습니다. 변환할 string의 첫번째와 마지막을 first와 last로 인자를 전달하고, 변환하여 저장될 string의 첫번째 위치를 d_first(destination first)로 인자를 전달합니다. unary_op는 변환에 대한 구현 코드가 됩니다.
2.1 대문자 변환
아래 예제는 transform()으로 string을 대문자로 변환하는 예제입니다. unary_op
는 Lambda로 전달하였으며, 문자에 toupper()를 적용하여 대문자로 변환합니다.
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string str = "Hello World";
std::transform(str.begin(), str.end(), str.begin(),
[](unsigned char c){ return toupper(c); });
std::cout << str << std::endl;
return 0;
}
Output:
HELLO WORLD
2.2 소문자 변환
소문자로 변환하려면 아래와 같이 tolower()
를 사용해야 합니다.
#include <iostream>
#include <algorithm>
#include <string>
int main() {
std::string str = "Hello World";
std::transform(str.begin(), str.end(), str.begin(),
[](unsigned char c){ return tolower(c); });
std::cout << str << std::endl;
return 0;
}
Output:
hello world
위에서 인자로 전달한 Lambda는 ::toupper
또는 ::tolower
와 같은 표현식으로 대체하여 더 적은 코드로 동일한 내용을 구현할 수 있습니다.
std::string str = "Hello World";
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
std::cout << "Upper case: " << str << std::endl;
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
std::cout << "Lower case: " << str << std::endl;
Output:
Upper case: HELLO WORLD
Lower case: hello world
Related Posts
- [C++] 배열을 리스트(list)로 변환
- [C++] 배열에서 특정 요소 제거
- [C++] vector 모든 요소의 합계 계산
- [C++] 두개의 배열이 같은지 비교
- [C++] 배열에 특정 요소가 있는지 확인
- [C++] 2차 배열 복사 방법
- [C++] 배열 복사하는 방법 (copy, memcpy)
- [C++] 함수의 인자로 배열 전달
- [C++] vector 모든 값의 평균 계산
- [C++] vector를 문자열로 변환
- [C++] 배열에서 요소의 Index 찾기
- [C++] 배열의 중복 요소 찾기
- [C++] 배열의 중복 요소 제거
- [C++] 배열 순서 거꾸로 뒤집기
- [C++] char 배열을 string으로 변환
- [C++] string을 char 배열로 변환
- [C++] 문자열 거꾸로 뒤집기
- [C++] vector의 중복 요소 제거
- [C++] 두 배열을 하나의 배열로 합치기
- [C++] 배열 길이, 크기 얻는 방법
- [C++] 배열에서 최대값, 최소값 찾기 (3가지 방법)
- [C++] int를 string으로 변환, 3가지 방법
- [C++] 문자열 리스트(Vector, 배열) 정렬
- [C++] string의 문자 정렬
- [C++] string을 int로 변환, 3가지 방법
- [C++] string 대문자/소문자 변환 방법
- [C++] string.compare() 문자열 비교
- [C++] int를 char로 변환, 3가지 방법
- [C++] 문자열 자르기, 3가지 방법
- [C++] isdigit(), 어떤 문자가 숫자인지 확인
- [C++] strlen(), 문자열 길이 계산
- [C++] strcmp(), strncmp() 함수로 문자열 비교
- [C++] strstr(), 특정 문자열 찾기