콘솔에 wchar_t 값을 어떻게 인쇄 할 수 있습니까?
예:
#include <iostream>
using namespace std;
int main()
{
wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет"; //Russian language
cout << ru
<< endl
<< en;
return 0;
}
이 코드는 주소와 같은 HEX 값만 인쇄합니다. wchar_t 문자열을 인쇄하는 방법은 무엇입니까?
편집 : 기본 로케일로 표시 할 수없는 텍스트를 작성하려는 경우 작동하지 않습니다. :-(
사용 std::wcout
대신에 std::cout
.
wcout << ru << endl << en;
제가 제안 할 수 있습니까 std::wcout
?
따라서 다음과 같습니다.
std::cout << "ASCII and ANSI" << std::endl;
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl;
여기 에서 관련 질문에서 자세한 정보를 찾을 수 있습니다 .
실제로 utf-8 문자로 채워진 일반 문자 배열을 사용할 수 있습니다. 이렇게하면 언어간에 문자를 혼합 할 수 있습니다.
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
cout << "\tДОБРО ПОЖАЛОВАТЬ В КИНО!\n";
}
Windows에는 매우 혼란스러운 정보가 있습니다. Windows에서 프로그래밍하기 전에 Unix / Linux에서 C / C ++ 개념을 배워야합니다.
wchar_t는 문자를 와이드 문자라고하는 고정 된 16 비트 메모리 크기 인 UTF-16으로 저장하지만 콘솔이 UTF-16으로 출력되지 않으므로 wprintf () 또는 wcout ()은 영어가 아닌 와이드 문자를 올바르게 인쇄하지 않습니다. Windows는 현재 로케일로 출력하고 unix / linux는 UTF-8로 출력하며 모두 멀티 바이트입니다. 따라서 인쇄하기 전에 와이드 문자를 멀티 바이트로 변환해야합니다. unix 명령 wcstombs ()는 Windows에서 작동하지 않습니다. 대신 WideCharToMultiByte ()를 사용하십시오.
먼저 메모장이나 다른 편집기를 사용하여 파일을 UTF-8로 변환해야합니다. 그런 다음 명령 프롬프트 콘솔에 글꼴을 설치하여 사용자 언어로 읽고 쓸 수 있도록 콘솔의 코드 페이지를 UTF-8로 변경하여 명령 프롬프트 "chcp 65001"에 입력하여 올바르게 표시되도록합니다. 반면 cygwin은 이미 기본값이 UTF-8입니다. 여기 내가 태국어로 한 일이 있습니다.
#include <windows.h>
#include <stdio.h>
int main()
{
wchar_t* in=L"ทดสอบ"; // thai language
char* out=(char *)malloc(15);
WideCharToMultiByte(874, 0, in, 15, out, 15, NULL, NULL);
printf(out); // result is correctly in Thai although not neat
}
Note that 874=(Thai) code page in the operating system, 15=size of string
My suggestion is to avoid printing non-english wide characters to console unless necessary because it is not easy.
You can print wide characters with wprintf
.
#include <iostream>
int main()
{
wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет"; //Russian language
wprintf(en);
wprintf(ru);
return 0;
}
Output:
Hello
Привет
we are not looking for easy ways!
int i = 0;
while (ru[i]) {
std::cout << (char)ru[i];
i++;
}
참고URL : https://stackoverflow.com/questions/2493785/how-i-can-print-the-wchar-t-values-to-console
'Program Tip' 카테고리의 다른 글
Git 리포지토리에서 이전에 무시 된 파일 무시 해제 문제 (0) | 2020.11.18 |
---|---|
Subversion에서 특정 사용자가 변경 한 모든 파일 나열 (0) | 2020.11.18 |
If-less 프로그래밍 (기본적으로 조건부 없음) (0) | 2020.11.18 |
다중 Moq It.Is (0) | 2020.11.18 |
System.out.println의 다중 스레드 출력이 인터리브 됨 (0) | 2020.11.18 |