본문 바로가기

전체 글

(736)
wchar_t 사용에 관하여 [2] [1. 개요]멀티바이트 문자열에서 wide char 문자열로 변환 혹은 그 반대 방향으로 변환 시 주의 점.Locale 에 대한 이해인코딩 변경이므로, 데이터 인코딩이 적절한지 확인출력에 관하여.[2. Locale 에 대한 이해]리눅스 기준으로는locale -a 를 이용하여, 현재 시스템에 설치된 locale 을 확인 할 수 있다.# locale-gen ko_KR.UTF-8 을 이용해서 한국어 관련 locale 을 설치 할 수 있다.윈도우에서 파워 쉘 기준으로는Get-WinSystemLocale 명령어로 확인 가능[3. 리눅스 관련 코드]#include #include #include #include #include int main(){ wchar_t wstr[128]; std:..
wchar_t 사용과 관련하여. [1. 개요]윈도우 환경에서 wchar_t 에 관련 된 여러 연산 들 중, 아래와 같은 연산 결과가 예상과 다름.iswdigitiswalphaiswalnum한글 '안' 을 유니코드로 표현하면, 10진수로 50504 이며,이는 기존 아스키 코드로 표현가능한 숫자, 영문이 아님을 알 수 있지만, 위 함수들의 결과는 숫자, 알파벳이라고 그 결과를 반환한다. 또, wstring 에 대해서, std::wcout 등을 통해 출력해도 정상적으로 문자열이 출력되지 않았음. 해결 방법을 알아보던 중, locale 을 제대로 설정하지 않았다는 것을 보았고, 그 밖에 관련된 것들이 아래와 같은데,std::locale() SetConsoleOutputCP(CP_UTF8);std::locale::global(std::local..
포함-배제의 원리. [16565] [1. 문제 설명]https://www.acmicpc.net/problem/16565[2. 풀이 접근]여러 집합의 합집합의 원소 수를 셀 때,각 집합의 크기를 더한 뒤 겹치는 부분(교집합)을 빼거나 더하는 과정을 반복하여 정확한 전체 개수를 구하는 방법. 가령, 1이상 100 이하의 자연수 집합에서 2 또는 3의 배수의 개수를 구해야 할 때,2의 배수 개수를 구하고, 3의 배수를 구하여 서로 더하면,6의 배수가 중복되어 더해진다. (교집합이 되어버림) 따라서, 6의 배수 개수를 전체 결과에서 빼야 정확한 개수를 구할 수 있다.[3. 코드]