【问题标题】:UTF-8 text to clipboard CUTF-8 文本到剪贴板 C
【发布时间】:2016-06-11 02:14:05
【问题描述】:

我一直在寻找如何带弦的方法,

const char* output = "ヽ(⌐■_■)ノ♪♬";

到剪贴板。

SetClipboardData(CF_UNICODETEXT, hMem);

我已经尝试过 MultiByteToWideChar,但我得到的只是噪音,而且还声称您无法将 UTF-16LE 保存到剪贴板 (wchar_t)。老实说,我只是感到困惑。一个方向或代码示例会很棒。

【问题讨论】:

  • 什么操作系统?
  • @Adrian:MultiByteToWideChar 是 Windows AP,所以是 Windows。
  • 如果您决定使用它,这在 SDL 中非常简单

标签: c windows unicode utf-8 clipboard


【解决方案1】:

Windows 使用 UTF-16LE。该字符串应使用L 前缀创建。要使用 UTF8,您可以使用 u8 前缀声明字符串。例如:

const char* text = u8"ヽ(⌐■_■)ノ♪♬E";

然后你必须使用MultiByteToWideChar 将UTF8 转换为UTF16 并在WinAPI 中使用。请注意,要使用u8,您需要更新的编译器,例如 VS2015。

首先使用 UTF16 更容易。例如:

const wchar_t* text = L"ヽ(⌐■_■)ノ♪♬E";
int len = wcslen(text);

HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (len + 1) * sizeof(wchar_t));
wchar_t* buffer = (wchar_t*)GlobalLock(hMem);
wcscpy_s(buffer, len + 1, text);
GlobalUnlock(hMem);

OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT, hMem);
CloseClipboard();

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 2019-09-28
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多