저는 C++로 새로운 명령 행 응용 프로그램을 작성했습니다. 물론 우리가 지원하는 플랫폼은 Windows입니다.Windows C++ 콘솔 응용 프로그램에서 wchar_t/wmain을 사용하는 것이 합리적입니까?
기본적으로 Windows 콘솔은 로캘에 따라 OEM 코드 페이지를 사용합니다 (예 : 내 컴퓨터에서는 CP437/DOS.Western 임). 윈도우 키릴 문자 버전이라면 CP866이 될 것입니다. 이러한 OEM 코드 페이지는 256 자만 포함합니다.
Windows 콘솔은 입력 키 스트로크를 기본 코드 페이지를 기반으로 문자로 변환한다는 것을 의미하는 것으로 생각합니다. 현재 선택한 글꼴에 따라 해당 글리프가 있으면 표시됩니다.
- 그런 경우에는 내 응용 프로그램에서 wmain/wchar_t와 넓은 char 유형을 사용하는 것이 합리적인지 여부는 무엇입니까?
- 넓은 유형을 사용하면 어떤 이점이 있습니까? 아니면 char * 만 사용하면 심각한 문제가 발생합니까?
- 넓은 문자 유형을 사용하는 경우 명령 행 인수 및 환경 문자열의 인코딩은 무엇입니까 - (wchar_t * argv [] 및 wchar_t * envp []). Windows CRT에 의해 UTF-16으로 변환 되었습니까? 아니면 변경되지 않았습니까?
귀하의 기여에 감사드립니다.
@oofe 귀하의 답변에 감사드립니다. 그러나 아직 명확하지 않은 것은 거의 없습니다. 1. Windows 명령 프롬프트에 기본 코드 페이지가 있습니다. 현재 활성 코드 페이지는 chcp 명령을 실행하여 검색 할 수 있습니다. 동일한 명령을 사용하여 변경할 수 있습니다. 그것은 귀하의 의견에 따라 현재 사용되는 키보드 레이아웃과 아무 관련이 없습니다. 그렇다면 이것의 중요성은 무엇입니까?교차 시나리오에서의 행동은 무엇인지 확실하지 않습니다 : 중국어 kb 레이아웃 및 키릴 코드 페이지. –
2. 유니 코드 사용 응용 프로그램의 경우 명령 프롬프트에서 인수를 사용하여 호출하면 명령 줄 인수가 Windows CRT에서 UTF-16으로 변환되고 wchar_t * argv []로 wmain()에 전달됩니다. 그게 맞습니까? 이것은 위 질문 3에서 의미하는 바입니다. –