내 유니 코드 문자열이 올바르게 처리 (인쇄 / 복사)되지 않는 이유는 무엇입니까?

형광 녹색 5

유니 코드 문자열로 작업 할 수있는 프로그램을 만들고 결국에는이를 Windows 클립 보드에 복사 할 수 있습니다.

저는 간단한 cout테스트 프로그램으로 시작했습니다 .

#include <iostream>

int main()
{
    std::cout << "( ͡° ͜ʖ ͡°)\n";
    return 0;
}

불행히도 유니 코드를 처리하지 않고 대신 다음을 반환했습니다.

( ͡° ͜ʖ ͡°)

코드 파일이 유니 코드 문자로 저장되지 않는다는 느낌이 들었 기 때문에 여기 에서 이스케이프 시퀀스로 표현하기로 결정했습니다 .

#include <iostream>

using namespace std;

int main()
{
    std::cout << "( \u0361\u00b0 \u035c\u0296 \u0361\u00b0)\n";
    return 0;
}

불행히도 프로그램은 이전과 동일한 결과를 반환했습니다.

내 최종 목표는 유니 코드 문자열을 Windows 클립 보드에 복사 할 수있는 프로그램을 만드는 것이므로 다른 데이터 유형 string이 필요한 경우 문자열 시작 부분에 데이터 / 서명을 추가하는 것만 큼 간단하지 않습니다. 유니 코드임을 나타내면이 클립 보드 작성 코드를 유니 코드를 지원하도록 조정할 수 있는지 확실하지 않습니다.

#include <string>
#include <windows.h>

void clip(std::string input);

int main()
{
    clip("( ͡° ͜ʖ ͡°)");
    return 0;
}

void clip(std::string input)
{
    HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, strlen(input.c_str()) + 1);

    memcpy(GlobalLock(hMem), input.c_str(), strlen(input.c_str()) + 1);
    GlobalUnlock(hMem);
    OpenClipboard(0);
    EmptyClipboard();
    SetClipboardData(CF_TEXT, hMem);
    CloseClipboard();
}

메모:

  • 이 프로그램을 Windows 10에서 개발 중입니다.
  • 내 시스템에서 conhost.exe(Windows 콘솔) 문제의 유니 코드 문자열을 처리 할 수 ​​있습니다.
  • MinGW 컴파일러와 함께 Code :: Blocks를 사용하고 있습니다.
Vyacheslav Napadovsky

사용 CF_UNICODETEXT뿐만 아니라 CF_TEXT. 또한 L접두사로 유니 코드 문자열을 선언해야 합니다 (예 : L"".

#include <Windows.h>
#include <cstring>
#include <string>

int main() {
    std::wstring str(L"( ͡° ͜ʖ ͡°)");
    if (OpenClipboard(HWND_DESKTOP)) {
        EmptyClipboard();
        auto sz = (str.size() + 1) * sizeof(str[0]);
        auto hMem = GlobalAlloc(GMEM_MOVEABLE, sz);
        if (hMem != nullptr) {
            auto pMem = GlobalLock(hMem);
            memcpy(pMem, str.c_str(), sz);
            GlobalUnlock(hMem);
            SetClipboardData(CF_UNICODETEXT, hMem);
        }
        else {
            fprintf(stderr, "Can't allocate memory");
        }
        CloseClipboard();
    }
    else {
        fprintf(stderr, "Can't open clipboard");
    }
    return 0;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL Server가 코드를 올바르게 처리하지 않는 이유는 무엇입니까?

분류에서Dev

내 코드가 올바른 최소 차이를 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 Python 코드가 부울을 올바르게 평가하지 않는 이유는 무엇입니까?

분류에서Dev

내 코드가 동기화에서 올바르게 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

인쇄 메시지가 내 C # 코드에 인쇄되지 않는 이유는 무엇입니까?

분류에서Dev

mysqli bind 함수가 내 문자열을 올바르게 처리하지 못하는 이유는 무엇입니까?

분류에서Dev

내 div가 올바르게 쌓이지 않는 이유는 무엇입니까?

분류에서Dev

유니 코드 문자가 올바르게 렌더링되지 않는 이유

분류에서Dev

내 코드가 두 번 이상 인쇄되는 이유는 무엇입니까?

분류에서Dev

바이너리 파일의 내용이 c로 인쇄되지 않는 이유는 무엇입니까?

분류에서Dev

행렬이 올바르게 초기화 / 인쇄되지 않는 이유는 무엇입니까?

분류에서Dev

생성자에 문자열에 대한 참조가있을 때 올바르게 인쇄되지 않는 이유는 무엇입니까?

분류에서Dev

사이드 바가 올바르게 정렬되지 않는 이유는 무엇입니까?

분류에서Dev

타이머가 전역 변수를 올바르게 처리하지 않는 이유는 무엇입니까?

분류에서Dev

Powershell이 달러 기호와 물음표가있는 문자열을 올바르게 처리하지 않는 이유는 무엇입니까?

분류에서Dev

내 코드가 아무 것도 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 코드가 평균 결과가 올바르지 않은 이유는 무엇입니까?

분류에서Dev

TextBox가 내 XAML 코드의 Label에 바인딩되지 않는 이유는 무엇입니까?

분류에서Dev

내 코드가 출력을 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 Bit String to Hex String 코드가 결과를 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

내 문자열의 첫 글자가 인쇄되지 않는 이유는 무엇입니까?

분류에서Dev

코드가 올바르게 실행되는 것을 보았을 때 코드가 여전히 다른 파일에 문자열을 인쇄하는 이유는 무엇입니까?

분류에서Dev

내 JButton 아이콘이 올바르게 표시되지 않는 이유는 무엇입니까?

분류에서Dev

내 아이콘이 albert launcher에서 올바르게 표시되지 않는 이유는 무엇입니까?

분류에서Dev

변경 이벤트 처리기가 내 코드에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 코드가 반복되지 않는 이유는 무엇입니까?

분류에서Dev

텍스트 요소의 내용이 올바르게 정당화되지 않는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    SQL Server가 코드를 올바르게 처리하지 않는 이유는 무엇입니까?

  2. 2

    내 코드가 올바른 최소 차이를 인쇄하지 않는 이유는 무엇입니까?

  3. 3

    내 Python 코드가 부울을 올바르게 평가하지 않는 이유는 무엇입니까?

  4. 4

    내 코드가 동기화에서 올바르게 작동하지 않는 이유는 무엇입니까?

  5. 5

    내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

  6. 6

    내 C 프로그램이 올바른 문자열을 인쇄하지 않는 이유는 무엇입니까?

  7. 7

    인쇄 메시지가 내 C # 코드에 인쇄되지 않는 이유는 무엇입니까?

  8. 8

    mysqli bind 함수가 내 문자열을 올바르게 처리하지 못하는 이유는 무엇입니까?

  9. 9

    내 div가 올바르게 쌓이지 않는 이유는 무엇입니까?

  10. 10

    유니 코드 문자가 올바르게 렌더링되지 않는 이유

  11. 11

    내 코드가 두 번 이상 인쇄되는 이유는 무엇입니까?

  12. 12

    바이너리 파일의 내용이 c로 인쇄되지 않는 이유는 무엇입니까?

  13. 13

    행렬이 올바르게 초기화 / 인쇄되지 않는 이유는 무엇입니까?

  14. 14

    생성자에 문자열에 대한 참조가있을 때 올바르게 인쇄되지 않는 이유는 무엇입니까?

  15. 15

    사이드 바가 올바르게 정렬되지 않는 이유는 무엇입니까?

  16. 16

    타이머가 전역 변수를 올바르게 처리하지 않는 이유는 무엇입니까?

  17. 17

    Powershell이 달러 기호와 물음표가있는 문자열을 올바르게 처리하지 않는 이유는 무엇입니까?

  18. 18

    내 코드가 아무 것도 인쇄하지 않는 이유는 무엇입니까?

  19. 19

    내 코드가 평균 결과가 올바르지 않은 이유는 무엇입니까?

  20. 20

    TextBox가 내 XAML 코드의 Label에 바인딩되지 않는 이유는 무엇입니까?

  21. 21

    내 코드가 출력을 인쇄하지 않는 이유는 무엇입니까?

  22. 22

    내 Bit String to Hex String 코드가 결과를 인쇄하지 않는 이유는 무엇입니까?

  23. 23

    내 문자열의 첫 글자가 인쇄되지 않는 이유는 무엇입니까?

  24. 24

    코드가 올바르게 실행되는 것을 보았을 때 코드가 여전히 다른 파일에 문자열을 인쇄하는 이유는 무엇입니까?

  25. 25

    내 JButton 아이콘이 올바르게 표시되지 않는 이유는 무엇입니까?

  26. 26

    내 아이콘이 albert launcher에서 올바르게 표시되지 않는 이유는 무엇입니까?

  27. 27

    변경 이벤트 처리기가 내 코드에서 작동하지 않는 이유는 무엇입니까?

  28. 28

    내 코드가 반복되지 않는 이유는 무엇입니까?

  29. 29

    텍스트 요소의 내용이 올바르게 정당화되지 않는 이유는 무엇입니까?

뜨겁다태그

보관