Yavuzlar
Ana sayfaTelegram
  • Yavuzlar
  • VulnLab
  • CodinLab
  • 📚EĞİTİM
    • PHP
      • XAMPP kurulumu
      • VS Code Kurulum
      • 1.0 PHP Nedir
      • 1.1 Dosya Oluşturma
      • 1.2 Syntax (Yazım Kuralları)
      • 1.3 PHP'de Echo ve Print
      • 1.4 PHP'deki yorumlar
      • 1.5 PHP Değişkenleri
      • 1.6 Operatörler (Operators)
      • 1.7 Veri Türünü Alma
      • 1.8 PHP'de String
      • 1.9 PHP'de Sabitler
      • 2.0 PHP'de If Else Elseif
      • 2.1 Switch Case
      • 2.2 PHP'de Döngüler
      • 2.3 PHP'de Diziler (Arrays)
      • 2.4 PHP'de Süper Global Değişkenleri
      • 2.5 PHP'de Cookie (Çerez) Ve Session (Oturum) Yöntemleri
      • 2.6 Form işlemleri
    • C++
      • 1.0 Temeller
        • 1.1 Dosya Oluşturma
        • 1.2 Syntax (Yazım Kuralları)
        • 1.3 Yorum Satırları
        • 1.4 C++ Değişkenleri
          • 1.4.1 Değişken Türleri
        • 1.5 Operatörler (Operators)
        • 1.6 Namespace
        • 1.7 Kullanıcı Girdisi (User Input)
        • 1.8 C++ Stringleri (C++ Strings)
        • 1.9 Matematik (Math) Fonksiyonları
        • 1.10 Booleans
        • 1.11 If Else
        • 1.12 Switch
        • 1.13 While Döngüsü
          • 1.13.1 Do While Döngüsü
        • 1.14 For Döngüsü
        • 1.15 Break/Continue
        • 1.16 Diziler
        • 1.17 Structures
        • 1.18 Enums
        • 1.19 References
        • 1.20 Pointers
      • 2.0 Fonksiyonlar
      • 3.0 Sınıflar
        • 3.1 OOP
        • 3.2 Sınıflar ve Objeler
        • 3.3 Sınıf Methodları
        • 3.4 Yapıcılar (Constructors)
        • 3.5 Erişim Belirleyicileri (Access Specifiers)
        • 3.6 Kapsülleme (Encapsulation)
        • 3.7 Inheritance
        • 3.8 Polimorfizm (Polymorphism)
        • 3.9 Dosyalar (Files)
        • 3.10 İstisnalar (Exceptions)
        • 3.11 Tarih ve Zaman (Date and Time)
      • 4.0 Veri Yapıları (Data Structures)
        • 4.1 Veri Yapıları ve STL
        • 4.2 Vektörler (Vectors)
        • 4.3 Listeler (Lists)
        • 4.4 Yığınlar (Stacks)
        • 4.5 Kuyruklar (Queues)
        • 4.6 Deque (Çift Uçlu Kuyruk)
        • 4.7 Küme (Set)
        • 4.8 Maps
        • 4.9 Iterator
        • 4.10 Algoritmalar
  • 🛠️ARAÇLAR
    • Aircrack-ng
    • Airgeddon
    • Arjun
    • BeEF
    • Bettercap
    • Docker
    • Gelişmiş Wireshark Kullanımı (Advanced Wireshark Usage)
    • Google Dorks
    • Hping3
    • John the Ripper
    • Metasploit Framework
    • Netcat
    • Nmap
    • OSINT Framework
    • PEASS-ng
    • Sublist3r
    • XSS Scanner
    • Wireshark
    • ZAP
    • HYDRA
  • 🖥️İŞLETİM SİSTEMLERİ
    • Linux101
    • MBR
  • 🔑KRİPTOLOJİ
    • Dijital Sertifika ve İmzalar
    • Sezar Şifrelemesi
    • Steganografi
    • Veri Şifreleme (Data Encryption)
  • 🔏Network
    • Domain Name Server (DNS)
    • Firewall Nedir? Nasıl Çalışır ?
    • Ortadaki Adam Saldırısı (Man In The Middle Attack)
    • OSI Modeli
    • Sanal Özel Ağlar (VPN)
    • World Wide Web (WWW)
  • 🔐PRIVILEGED
    • Docker Escape
  • 📨Protokoller
    • ARP
    • DHCP
    • FTP
    • HTTP/HTTPS
    • SSH
    • TCP/IP
    • UDP
    • Wİ-Fİ Güvenlik Protokolleri (WEP/WPA/WPA2/WPA3)
  • 💻SİBER TEHDİT İSTİHBARATI
    • Gelişmiş Siber Tehdit İstihbaratı Nedir?
  • 🔒WEB GÜVENLİĞİ
    • 403 ByPass
    • API Güvenliği (API Security)
    • Broken Access Control
    • Bulut Güvenliği (Cloud Security)
    • Command Injection
    • Cross Origin Resource Sharing
    • Cross Site Request Forgery (CSRF)
    • Cyber Kill Chain
    • DDoS Saldırıları
    • File Upload Zafiyeti Nedir?
    • HTTP Request Smuggling
    • Insecure Direct Object Reference (IDOR)
    • Incident Response
    • Local File Inclusion (LFI)
    • NoSQL Injection
    • Pentest 101
    • Race Condition
    • Server Side Request Forgery (SSRF)
    • Server Side Template Injection (SSTI)
    • Spring4Shell
    • Two Factor Authentication Bypass
    • XML External Entity Attack (XEE)
  • 🤖YAPAY ZEKA
    • ChatGPT for Hacking
    • Siber Güvenlik ve Yapay Zeka
    • Yapay Zeka ile Sahte Fotoğraf Tespiti
  • 🌐YAZILIM
    • Düzenli İfadeler (Regular Expressions)
    • Elasticsearch Nedir?
    • Front-end Teknolojileri
    • Golang'da Arayüzler (Interfaces)
    • Go'da Concurrency ve Uygulamaları
    • Güvenli Kodlama (Secure Coding)
    • Java Overloading vs Overriding
    • JSON Web Token (JWT)
    • Material-UI
    • NextJS Nedir?
    • ReactJS Kancalar (Hooks)
    • ReactJS Nedir?
    • Redux Toolkit
    • SOLID Yazılım Geliştirme Prensipleri
    • SQL 101
    • UI / UX Nedir?
    • Veri Taşıma Nedir? (Database Migration)
    • Versiyon Kontrol Sistemleri ve GIT
  • 🔷DİĞER
    • Bug Bounty (Hata Ödülü) Nedir?
    • Popüler Yazılımların Kurulumları
      • Ubuntu Server 24.04 LTS Kurulumu
      • Ubuntu için Güncel Docker Engine Kurlumu
    • Güvenlik Operasyonları Merkezi Nedir?
    • Honeypot (Bal Küpü)
    • IoT Güvenliği Nedir?
    • ShellShock Exploit
    • Yük Dengeleyici (Load Balancer) Nedir?
Powered by GitBook
On this page
  • std::string Sınıfı
  • String Birleştirme
  • Sayılar ve Stringler
  • String Uzunluğu
  • Stringlere Erişim
  • Özel Karakterler
  • Kullanıcı Girişi ile Stringler
  • String Namespace
  • C-Style Stringler

Was this helpful?

  1. EĞİTİM
  2. C++
  3. 1.0 Temeller

1.8 C++ Stringleri (C++ Strings)

C++ dilinde stringler, metin verilerini saklamak için kullanılan veri türleridir. C++'da stringlerle çalışmanın iki ana yolu vardır:

  • C-Style Stringler (C-İçin Stringler)

  • std::string Sınıfı

std::string Sınıfı

std::string, C++ Standart Kütüphanesi'nin bir parçasıdır ve dinamik olarak büyüyebilen, kolay yönetilebilen ve çok sayıda kullanışlı fonksiyon sunan bir sınıftır.

Örnek:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "Merhaba, Dünya!";
    cout << greeting << endl;
    return 0;
}

string sınıfını kullanmak için <string> kütüphanesinin eklenmesi gerekiyor.

String Birleştirme

String birleştirme, iki veya daha fazla stringi bir araya getirmek için kullanılır. C++'da std::string sınıfı, + ve +=operatörleri ile string birleştirmeyi kolaylaştırır.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string firstName = "Hüseyin";
    string lastName = "Tazegül";
    string fullName = firstName + " " + lastName; // "Hüseyin Tazegül"

    cout << "Tam İsim: " << fullName << endl;
    return 0;
}

+= Operatörü ile Birleştirme

string greeting = "Merhaba";
greeting += ", Dünya!"; // "Merhaba, Dünya!"
cout << greeting << endl;

Sayılar ve Stringler

C++'da sayılar ile stringler arasında dönüşüm yapmak sıkça gereklidir. Örneğin, bir sayıyı stringe çevirmek veya bir stringi sayıya çevirmek isteyebilirsiniz.

Sayıyı Stringe Çevirme (to_string)

#include <iostream>
#include <string>
using namespace std;

int main() {
    int number = 42;
    string strNumber = to_string(number);
    cout << "Sayı: " << number << ", String: " << strNumber << endl;
    return 0;
}

Stringi Sayıya Çevirme (stoi, stof, stod)

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "12345";
    int number = stoi(str); // Stringi integer'a çevirir
    cout << "String: " << str << ", Sayı: " << number << endl;

    string floatStr = "3.14";
    float floatNumber = stof(floatStr); // Stringi float'a çevirir
    cout << "String: " << floatStr << ", Float Sayı: " << floatNumber << endl;

    string doubleStr = "2.71828";
    double doubleNumber = stod(doubleStr); // Stringi double'a çevirir
    cout << "String: " << doubleStr << ", Double Sayı: " << doubleNumber << endl;

    return 0;
}

String Uzunluğu

Bir stringin uzunluğunu bulmak için length() veya size() fonksiyonları kullanılır. Her iki fonksiyon da aynı sonucu verir ve stringdeki karakter sayısını döndürür.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string message = "Merhaba, Dünya!";
    cout << "Mesaj uzunluğu: " << message.length() << endl; // 15
    cout << "Mesaj uzunluğu (size): " << message.size() << endl; // 15
    return 0;
}

Stringlere Erişim

Stringler içerisindeki karakterlere erişmek için köşeli parantez ([]) veya at() fonksiyonu kullanılır. [] operatörü hızlı erişim sağlar ancak sınır kontrolleri yapmaz. at() fonksiyonu ise sınır kontrolleri yapar ve hatalı erişimlerde istisna fırlatır.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string word = "C++";

    // Köşeli parantez ile erişim
    cout << "İlk karakter: " << word[0] << endl; // 'C'

    // at() fonksiyonu ile erişim
    cout << "İkinci karakter: " << word.at(1) << endl; // '+'

    // Karakter değiştirme
    word[1] = '+';
    cout << "Değiştirilmiş kelime: " << word << endl; // "C++"

    return 0;
}

Özel Karakterler

Stringlerde özel karakterler kullanmak için kaçış karakterleri (\) kullanılır. Bu karakterler, yazılması zor veya doğrudan yazılamayan karakterleri temsil eder.

Yaygın Kaçış Karakterleri:

  • : Yeni satır

  • : Sekme

  • \\ : Ters eğik çizgi

  • \" : Çift tırnak

  • \' : Tek tırnak

#include <iostream>
#include <string>
using namespace std;

int main() {
    string text = "Merhaba,\n\tDünya!";
    cout << text << endl;

    string path = "C:\\Program Files\\C++";
    cout << "Dosya Yolu: " << path << endl;

    string quote = "Hüseyin \"C++\" öğreniyor.";
    cout << quote << endl;

    return 0;
}

Çıktı:

Merhaba,
	Dünya!
Dosya Yolu: C:\Program Files\C++
Hüseyin "C++" öğreniyor.

Kullanıcı Girişi ile Stringler

Kullanıcıdan string girişi almak için cin veya getline() fonksiyonları kullanılır. cin, ilk boşluk karakterine kadar olan kısmı alırken, getline() tüm satırı alır (boşluklar dahil).

cin ile Kullanıcı Girişi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    cout << "Adınızı girin: ";
    cin >> name; // İlk boşluğa kadar olan kısmı alır
    cout << "Merhaba, " << name << "!" << endl;
    return 0;
}

getline() ile Kullanıcı Girişi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string fullName;
    cout << "Tam isminizi girin: ";
    getline(cin, fullName); // Tüm satırı alır (boşluklar dahil)
    cout << "Girdiginiz isim: " << fullName << endl;
    return 0;
}

Çoklu Girdi Alma

#include <iostream>
#include <string>
using namespace std;

int main() {
    string firstName, lastName;
    int age;

    cout << "İlk adınızı girin: ";
    cin >> firstName;

    cout << "Soyadınızı girin: ";
    cin >> lastName;

    cout << "Yaşınızı girin: ";
    cin >> age;

    cout << "Merhaba, " << firstName << " " << lastName << "! " << age << " yaşındasınız." << endl;
    return 0;
}

String Namespace

std::string sınıfı, C++ Standart Kütüphanesi'nin std namespace'i altında tanımlanmıştır. std namespace'i, standart kütüphane elemanlarını kapsar ve isim çakışmalarını önlemek için kullanılır.

Kullanım Yöntemleri:

  • Namespace Kapsayıcıları Kullanarak:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string message = "Hello, World!";
    cout << message << endl;
    return 0;
}
  • std:: Önekini Kullanarak:

#include <iostream>
#include <string>

int main() {
    std::string message = "Hello, World!";
    std::cout << message << std::endl;
    return 0;
}

using Anahtar Kelimesi ile Namespace Kullanımı

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "Merhaba";
    cout << greeting << ", Dünya!" << endl;
    return 0;
}

Namespace Alias (Takma Ad) Kullanımı

#include <iostream>
#include <string>
namespace geo = std;

int main() {
    geo::string location = "İstanbul";
    geo::cout << "Lokasyon: " << location << geo::endl;
    return 0;
}

C-Style Stringler

C-Style stringler, karakter dizilerini char dizileri olarak temsil eder ve null karakter ('\0') ile sonlandırılır. Bu yöntem, C dilinden miras alınmıştır ve C++'da da kullanılabilir.

Özellikler:

  • Sabit veya dinamik boyutlu olabilir.

  • Standart kütüphane fonksiyonları (<cstring>) ile işlenir.

  • Daha düşük seviyeli kontrol sağlar ancak hata yapma olasılığı yüksektir.

Örnek Kullanım:

#include <iostream>
#include <cstring> // C-Style string fonksiyonları için gerekli
using namespace std;

int main() {
    // C-Style string tanımlama
    char greeting1[] = "Merhaba";
    char greeting2[20]; // Boş bir karakter dizisi

    // Kopyalama işlemi
    strcpy(greeting2, greeting1);
    cout << "Greeting2: " << greeting2 << endl;

    // Birleştirme işlemi
    strcat(greeting2, " Dünya!");
    cout << "Birleştirilmiş Greeting2: " << greeting2 << endl;

    // Karakter sayısını bulma
    int length = strlen(greeting2);
    cout << "Greeting2'nin uzunluğu: " << length << endl;

    return 0;
}

Yaygın Fonksiyonlar:

  • strcpy(dest, src): src stringini dest stringine kopyalar.

  • strcat(dest, src): src stringini dest stringinin sonuna ekler.

  • strlen(str): str stringinin uzunluğunu döndürür.

  • strcmp(str1, str2): str1 ve str2 stringlerini karşılaştırır.

Güvenlik Notları:

C-Style stringler kullanırken, buffer overflow gibi hatalara dikkat etmek gerekir. strncpy ve strncat gibi sınırlandırılmış fonksiyonlar kullanarak güvenliği artırabilirsiniz.

Örnek Güvenli Kopyalama:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char src[] = "Güvenli Kopyalama";
    char dest[25];

    // strncpy kullanarak güvenli kopyalama
    strncpy(dest, src, sizeof(dest) - 1);
    dest[sizeof(dest) - 1] = '\0'; // Null terminator ekleme

    cout << "Kaynak: " << src << endl;
    cout << "Hedef: " << dest << endl;

    return 0;
}
Previous1.7 Kullanıcı Girdisi (User Input)Next1.9 Matematik (Math) Fonksiyonları

Last updated 4 months ago

Was this helpful?

📚