10 C++-Projekte für Ihr Portfolio, die Arbeitgeber beeindrucken

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum C++ immer noch ganz oben steht und wie ein Portfolio alles entscheidet

\n\n

Sie haben sicherlich gehört: „C++ ist schwierig“, „C++ stirbt aus“ und andere Schauermärchen. Die Realität sieht jedoch so aus: C++ regiert immer noch in der Game-Entwicklung, bei hochlastigen Systemen, im Finanzwesen und in der Embedded-Entwicklung. Weder Unreal Engine, noch Chromium, noch Datenbanken auf MySQL-Niveau kommen ohne C++ aus.

\n\n

Es gibt jedoch ein Problem: Die Syntax zu lernen ist nur die halbe Miete. Ein Arbeitgeber möchte kein Diplom sehen, sondern C++-Projekte für das Portfolio, in denen Architektur, Arbeit mit Speicher und die Fähigkeit, reale Probleme zu lösen, sichtbar sind. Deshalb haben wir 10 Ideen zusammengestellt – von einfach bis fortgeschritten. Jede Idee wird von einem Codebeispiel und einer Erklärung begleitet, welche Fähigkeit sie verbessert.

\n\n

Bereit, ein Portfolio aufzubauen, bei dem der Personalabteilung eine Gänsehaut bekommt? Los geht's.

\n\n

1. Texteditor in der Konsole (nano-ähnlich)

\n

Schwierigkeit: Anfänger
\nFähigkeiten: Dateiarbeit, Zeichenketten, Terminalsteuerung

\n\n

Ein Klassiker, der nie aus der Mode kommt. Sie erstellen einen einfachen Editor zum Öffnen, Bearbeiten und Speichern von Dateien. Sie lernen den Umgang mit fstream, die Verarbeitung von Tastendrücken und die Pufferverwaltung.

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n#include <vector>\n\nclass TextEditor {\nprivate:\n    std::vector<std::string> lines;\n    std::string filename;\npublic:\n    void open(const std::string& file) {\n        filename = file;\n        std::ifstream in(file);\n        std::string line;\n        while (std::getline(in, line)) {\n            lines.push_back(line);\n        }\n    }\n    void save() {\n        std::ofstream out(filename);\n        for (const auto& line : lines) {\n            out << line << '\\n';\n        }\n    }\n    void run() {\n        // Hier kommt die Eingabeverarbeitungsschleife\n    }\n};
\n\n

2. Einfacher HTTP-Server (single-threaded)

\n

Schwierigkeit: Mittel
\nFähigkeiten: Sockets, Netzwerkprotokolle, Anfrageverarbeitung

\n\n

Schreiben Sie einen Server, der HTTP-GET-Anfragen annimmt und statische Dateien ausliefert. Dies ist der Goldstandard, um zu verstehen, wie das Internet funktioniert. Verwenden Sie sys/socket.h unter Linux oder winsock2.h unter Windows.

\n\n
#include <iostream>\n#include <cstring>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <unistd.h>\n\nint main() {\n    int server_fd = socket(AF_INET, SOCK_STREAM, 0);\n    sockaddr_in address;\n    address.sin_family = AF_INET;\n    address.sin_addr.s_addr = INADDR_ANY;\n    address.sin_port = htons(8080);\n\n    bind(server_fd, (struct sockaddr*)&address, sizeof(address));\n    listen(server_fd, 3);\n\n    std::cout << "Server started on port 8080\\n";\n    // Accept-Schleife und Lesen der Anfragen\n    return 0;\n}
\n\n

Ein solches Projekt im C++-Portfolio zeigt sofort, dass Sie das OSI-Modell verstehen und mit Low-Level-Netzwerkschnittstellen umgehen können.

\n\n

3. Aufgabenverwaltung (To-Do-Liste) mit grafischer Oberfläche

\n

Schwierigkeit: Mittel
\nFähigkeiten: Qt oder SFML, MVC-Muster, Arbeit mit DB (SQLite)

\n\n

Erstellen Sie eine Anwendung zum Hinzufügen, Löschen und Sortieren von Aufgaben. Verwenden Sie die Qt-Bibliothek – dies vermittelt Ihnen ein Verständnis von Signalen und Slots sowie Fähigkeiten im Umgang mit GUIs. Fügen Sie die Speicherung in SQLite über sqlite3.h hinzu.

\n\n
#include <QApplication>\n#include <QMainWindow>\n#include <QListWidget>\n#include <QPushButton>\n\nint main(int argc, char *argv[]) {\n    QApplication app(argc, argv);\n    QMainWindow window;\n    window.setWindowTitle("Task Manager");\n    \n    QListWidget* list = new QListWidget(&window);\n    QPushButton* addBtn = new QPushButton("Add Task", &window);\n    \n    // Layout und Signalverbindungen\n    window.show();\n    return app.exec();\n}<                

Blogs

Buchempfehlungen