C++string复制到剪贴板
时间: 2024-10-19 18:11:10 浏览: 26
在C++中,将`std::string`复制到剪贴板通常需要借助操作系统提供的API。Windows系统可以使用`SetClipboardData`函数配合`CF_TEXT`格式,而Linux和macOS则分别有`xsel`、`pypaste`等工具库。下面是一个基本的Windows示例:
```cpp
#include <windows.h>
#include <atlstr.h>
void copyStringToClipboard(std::wstring str) {
HGLOBAL hMem = ::GlobalAlloc(GHND, (int)wcslen(str) + 1);
if (hMem != NULL) {
LPWSTR lpStr = static_cast<LPWSTR>(::GlobalLock(hMem));
wcscpy_s(lpStr, str.c_str());
::GlobalUnlock(hMem);
// 将字符串设置到剪贴板
HANDLE hClipBoard = ::GetClipboardData(CF_TEXT);
if (hClipBoard == NULL) {
::SetClipboardData(CF_TEXT, hMem);
} else {
::EmptyClipboard();
::CombineFormat(hClipBoard, CF_TEXT, CF_UNICODETEXT, 0);
::InsertObject(hClipBoard, &IID_IUnknown, static_cast<IUnknown*>(hMem), 0);
}
::ReleaseClipboard();
}
}
// 使用时
std::wstring myString = L"Hello, World!";
copyStringToClipboard(myString);
```
请注意,上述代码依赖于Windows API,并且在实际项目中可能需要处理异常。对于跨平台需求,你可能需要使用第三方库,如Qt或QTClipboard。
阅读全文