C/C++ 에
int toupper (int c); int tolower (int c);
라는 함수가 있읍니다. man 페이지에는
-- 만일 c 가 unsigned char 값이 아니거나 EOF이면, 함수의 행동은 예상할 수 없다.
라고 되어 있는데, 만약 인수 c 가 현재의 로케일이나 문자셋 기준으로 unsigned char 범위를 넘는 경우, 해당 문자의 대문자나 소문자를 구할 수 있을까요.
문자셋이 아스키처럼 대소문자간에 일정offset이 있다면 그값을 빼거나 더하면될테고, 그렇지 않다면 문자별로 if나 switch문을 쓰거나 속도를 위해서라면 룩업테이블을 만들어 쓸수도 있겠지요.
-- 문자셋이 아스키처럼 대소문자간에 일정offset이 있다면 그값을 빼거나 더하면될테고, -- 그렇지 않다면 문자별로 if나 switch문을 쓰거나 속도를 위해서라면 -- 룩업테이블을 만들어 쓸수도 있겠지요.
이렇게 하면 당연히 되겠죠. 질문은 라이브러리 차원에서 해당 문자셋을 알고 있는 경우, 그 문자에 대한 대소문자를 구할 수 있는 함수나 기타의 방법이 있냐는 것입니다.
toupper 대신에 toupper_l 쓰면 되나 봅니다. 제가 직접 해본건 아니라서 해결될지는 모르겠습니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
문자셋이 아스키처럼 대소문자간에 일정offset이
문자셋이 아스키처럼 대소문자간에 일정offset이 있다면 그값을 빼거나 더하면될테고,
그렇지 않다면 문자별로 if나 switch문을 쓰거나 속도를 위해서라면 룩업테이블을 만들어 쓸수도 있겠지요.
-- 문자셋이 아스키처럼 대소문자간에
-- 문자셋이 아스키처럼 대소문자간에 일정offset이 있다면 그값을 빼거나 더하면될테고,
-- 그렇지 않다면 문자별로 if나 switch문을 쓰거나 속도를 위해서라면
-- 룩업테이블을 만들어 쓸수도 있겠지요.
이렇게 하면 당연히 되겠죠. 질문은 라이브러리 차원에서 해당 문자셋을 알고 있는 경우,
그 문자에 대한 대소문자를 구할 수 있는 함수나 기타의 방법이 있냐는 것입니다.
toupper 대신에 towupper_l 쓰면 되나
toupper 대신에 toupper_l 쓰면 되나 봅니다.
제가 직접 해본건 아니라서 해결될지는 모르겠습니다.
댓글 달기