std:: toupper
|
헤더 파일에 정의됨
<cctype>
|
||
|
int
toupper
(
int
ch
)
;
|
||
주어진 문자를 현재 설치된 C 로캘에 정의된 문자 변환 규칙에 따라 대문자로 변환합니다.
기본
"C"
로케일에서 다음 소문자들
abcdefghijklmnopqrstuvwxyz
은 해당 대문자들
ABCDEFGHIJKLMNOPQRSTUVWXYZ
로 교체됩니다.
목차 |
매개변수
| ch | - | 변환될 문자. ch 값이 unsigned char 로 표현 불가능하고 EOF 와 같지 않을 경우, 동작은 정의되지 않음. |
반환값
변환된 문자 또는 현재 C 로캘에 의해 대문자 버전이 정의되지 않은 경우의 ch 입니다.
참고 사항
<cctype>
의 다른 모든 함수들과 마찬가지로,
std::toupper
의 동작은 인자 값이
unsigned
char
로 표현 가능하지도 않고
EOF
와 같지도 않을 경우 정의되지 않습니다. 일반
char
(또는
signed
char
)와 함께 이러한 함수들을 안전하게 사용하려면, 인자를 먼저
unsigned
char
로 변환해야 합니다:
char my_toupper(char ch) { return static_cast<char>(std::toupper(static_cast<unsigned char>(ch))); }
마찬가지로, 반복자의 값 타입이 char 또는 signed char 인 경우 표준 알고리즘과 직접 사용해서는 안 됩니다. 대신 값을 먼저 unsigned char 로 변환하십시오:
std::string str_toupper(std::string s) { std::transform(s.begin(), s.end(), s.begin(), // static_cast<int(*)(int)>(std::toupper) // 잘못됨 // [](int c){ return std::toupper(c); } // 잘못됨 // [](char c){ return std::toupper(c); } // 잘못됨 [](unsigned char c){ return std::toupper(c); } // 정확함 ); return s; }
예제
#include <cctype> #include <climits> #include <clocale> #include <iostream> #include <ranges> int main() { for (auto bd{0}; unsigned char lc : std::views::iota(0, UCHAR_MAX)) if (unsigned char uc = std::toupper(lc); uc != lc) std::cout << lc << uc << (13 == ++bd ? '\n' : ' '); std::cout << "\n\n"; unsigned char c = '\xb8'; // the character ž in ISO-8859-15 // but ¸ (cedilla) in ISO-8859-1 std::setlocale(LC_ALL, "en_US.iso88591"); std::cout << std::hex << std::showbase; std::cout << "in iso8859-1, toupper('0xb8') gives " << std::toupper(c) << '\n'; std::setlocale(LC_ALL, "en_US.iso885915"); std::cout << "in iso8859-15, toupper('0xb8') gives " << std::toupper(c) << '\n'; }
출력:
aA bB cC dD eE fF gG hH iI jJ kK lL mM
nN oO pP qQ rR sS tT uU vV wW xX yY zZ
in iso8859-1, toupper('0xb8') gives 0xb8
in iso8859-15, toupper('0xb8') gives 0xb4
참고 항목
|
문자를 소문자로 변환
(함수) |
|
|
locale의 ctype 패싯을 사용하여 문자를 대문자로 변환
(함수 템플릿) |
|
|
와이드 문자를 대문자로 변환
(함수) |
|
|
C 문서
for
toupper
|
|
외부 링크
| 1. | ISO/IEC 8859-1 . 위키백과에서. |
| 2. | ISO/IEC 8859-15 . 위키백과에서. |