How do you copy/paste from the clipboard in C++?
Asked Answered
C

6

24

I'm still a C++ newbie who has only recently learned some file manipulation. I looked it up online and the codes given are way beyond my current skill. Is there a simple way to do this, or are there any good tutorials that can explain this from the very basics?

Citizen answered 22/6, 2011 at 7:15 Comment(6)
On what operating system? In what framework?Peccadillo
Which operating system are you using?Foreword
What operating system, and, in the case of Linux what clipboard?Charis
Interaction with the clipboard is not part of the (C++)-language standard. You have to use API functions of your operating system or the usually simplified access functions if you use a framework. You can use the Qt framework, delivered with huge amount of tutorials, but you have to learn about the usage of Qt. Hope that will helpDialectical
Ah, I didn't know it was OS dependent. I'm using 32-bit Windows 7.Citizen
For a cross-platform way, using Qt, we can see stackoverflow.com/a/15742175Sartor
O
28

In windows look at the following API:

An extensive discussion can be found here. Obviously this topic is strongly operating system related. And if you are using some framework (ie MFC/ATL) you generally find some helper infrastructure. This reply refer to the lowest API level in WIndows. If you are planning to use MFC have a look here, if you prefer ATL look here.

Oraleeoralia answered 22/6, 2011 at 7:22 Comment(2)
And don't forget about IsClipboardFormatAvailable.Workhorse
for simple wstring clipboard copy, see #40665390Unhinge
C
10

There is no cross-platform way to do this in C++


Now that we have that out of the way, Felice Pollano's answer provides the Windows API so you can manipulate the clipboard in Windows.

Apple provides an example application named ClipboardViewer and an entire reference to the NSPasteBoard and the functionality it provides.

As for Linux, it depends on what windowing manager you are running.

Caseinogen answered 22/6, 2011 at 7:31 Comment(0)
I
6

You can use ClipboardXX library for copy and pasting simple texts. Just download clipboardXX.hpp from github and copy it to your project path. Then follow its examples:

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

int main() {
    clipboardxx::clipboard clipboard;

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

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

Idou answered 4/6, 2020 at 18:33 Comment(1)
does not compile with bcc32Prudie
N
5

There is a cross platform way to do this in C++, provided you are willing to use the Qt Library.

A solution for this is provided here:

https://mcmap.net/q/582738/-in-qt-how-can-i-register-a-qstring-to-my-system-39-s-clipboard-both-quoted-and-non-quoted

Noisemaker answered 5/11, 2016 at 10:47 Comment(0)
S
0

A demo example shown here:

#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!");
}
Soutane answered 2/1 at 21:42 Comment(0)
P
-8

If you are looking for a simle way to do this : simulate the keyboard combination ctrl + v and you are done with it. On all platforms.

Peer answered 9/5, 2017 at 8:29 Comment(1)
Not every application supports Ctrl+C/V even on platforms where that combination is common for copy/paste. The reason I ended up at this question was because I need to implement copy/paste functionality for Ctrl+C/V in a Windows application.Sigridsigsmond

© 2022 - 2024 — McMap. All rights reserved.