如何在 C++ 中从剪贴板复制/粘贴?

问题描述 投票:0回答:6

我仍然是一个 C++ 新手,最近才学习一些文件操作。我在网上查了一下,给出的代码远远超出了我目前的能力。有没有一种简单的方法可以做到这一点,或者有什么好的教程可以从基础知识解释这一点?

c++ copy clipboard paste
6个回答
28
投票

windows中查看以下API:

广泛的讨论可以在这里找到。 显然这个主题与操作系统密切相关。如果您正在使用某种框架(即 MFC/ATL),您通常会找到一些辅助基础设施。此回复指的是 WIndows 中最低的 API 级别。如果您打算使用 MFC 看这里,如果您更喜欢 ATL 看这里


10
投票

在 C++ 中没有跨平台的方法来做到这一点


现在我们已经解决了这个问题,Felice Pollano 的答案提供了 Windows API,以便您可以在 Windows 中操作剪贴板。

Apple 提供了一个名为 ClipboardViewer 的示例应用程序以及对 NSPasteBoard 及其提供的功能的完整参考。

对于 Linux,这取决于您运行的窗口管理器。


6
投票

您可以使用ClipboardXX库来复制和粘贴简单文本。 只需从

github
下载 clipboardXX.hpp 并将其复制到您的项目路径即可。然后按照它的例子:

#include "clipboard.hpp"
#include <string>

int main() {
    clipboardxx::clipboard clipboard;

    // copy
    clipboard << "text you wanna copy";

    // paste
    std::string paste_text;
    clipboard >> paste_text;
}


5
投票

只要您愿意使用 Qt 库,就有一种跨平台的方法可以在 C++ 中执行此操作。

这里提供了解决方案:

https://stackoverflow.com/a/40437290/2158002


0
投票

此处显示演示示例:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QClipboard>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QString originalText = "My name is khan";
    ui->label_text_to_copied->setText(originalText);
    connect(ui->pushButton, &QPushButton::clicked,this,&MainWindow::copy_stuff);
}
MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::copy_stuff()
{
    QClipboard *clipboard = QGuiApplication::clipboard();
    QString text_to_be_copied = ui->label_text_to_copied->text();
    clipboard->setText(text_to_be_copied);
    ui->label_copy_status->setText("Copied!");
}


-8
投票

如果您正在寻找一种简单的方法来执行此操作:模拟键盘组合 ctrl + v 即可完成。在所有平台上。

© www.soinside.com 2019 - 2024. All rights reserved.