KO Developers

Go Back   KO Developers > KO Development > Geliştirme (Yeni) > C++


C++ Microsoft Visual Studio C++ konu anlatımı ve içeriklerin bulunduğu forumdur.


Beğeni Geçmişi1Beğeniler
  • 1 Post By OzkanOzdemir

Cevapla
LinkBack Seçenekler Stil
Okunmamış 09 Mayıs 2019, 14:32   #1 (permalink)
while (true) { printf("f*ck this life!"); }

OzkanOzdemir - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 02 Temmuz 2017
Bulunduğu yer: Eskişehir
Mesajlar: 1.112[+]
Ettiği teşekkür sayısı: 42
373 Mesaja 1.168 Kez Teşekkür Aldı
Kullanıcı Envanteri Server Tanıtımı Alt Forum (Aylık)Sabit Konu (Haftalık)Kişisel Rütbe (kalıcı)Sabit Konu (Aylık)Görünmezlik (kalıcı)

Standart String Trim C++ using STL & Boost Library

Merhaba, bu konumuzda C++ 11, C++ 17 ve Boost kütüphanesinde string trim yani string değerimizin sonundaki ve başındaki boşlukları silmeyi öğreneceğiz.

Şunu belirtmek istiyorum Server dosyalarındaki kullanılan trim örneği C++ 11 kütüphanesine ait ve C++ 17 kütüphanesiyle derlemeye çalıştığınızda hata alacaksınız.

Bunun sebebi ise C++17'den beri standart kütüphanenin bazı kısımları kaldırıldı. Biz şimdi bu kaldırılan kısımları yeni kütüphaneye göre uyarlanmış halini göreceğiz.

Bir de şurada dikkate etmeniz gereken bir husus var.
Server dosyalarında kullanılan rtrim ve ltrim fonksiyonları hem geriye string değer döndürüyor hem de parametre olarak string değeri convert ediyor.
Bu yüzden std::string & rtrim yerine void rtrim kullanmanız daha mantıklı olacaktır.

Gizli İçerik
4fairy bunu beğendi

__________________

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
OzkanOzdemir isimli Üye şuanda  online konumundadır   Alıntı ile Cevapla
OzkanOzdemir Üyemize Teşekkür Edenler:
4fairy (09 Mayıs 2019)
Okunmamış 09 Mayıs 2019, 17:40   #2 (permalink)
Normal Üye

4fairy - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 20 Nisan 2019
Mesajlar: 44[+]
Kredi Bakiyeniz: 1.972
Ettiği teşekkür sayısı: 19
4 Mesaja 15 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

Teşekkürler anlatımınız için yeni bilgiler ile işler biraz daha kolaylaşıcak sanırım
4fairy isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 09 Mayıs 2019, 21:46   #3 (permalink)
Bağımlı Üye

bytuku - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 23 Nisan 2018
Bulunduğu yer: BURSA
Mesajlar: 323[+]
Kredi Bakiyeniz: 7.919
Ettiği teşekkür sayısı: 8
15 Mesaja 90 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

Teşekkürler

__________________

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
bytuku isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 23 Mayıs 2019, 02:35   #4 (permalink)
Uzaklaştırılmış

Avatar Yok


Üyelik tarihi: 07 Şubat 2019
Mesajlar: 11[+]
Kredi Bakiyeniz: 489
Ettiği teşekkür sayısı: 0
0 Mesaja 0 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

Teşekkürler eline sağlık.
FrLasT isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 01 Haziran 2019, 23:31   #5 (permalink)
Çalışkan Üye

YigitHanSen - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 17 Ekim 2017
Bulunduğu yer: İstanbul,Ümraniye
Mesajlar: 173[+]
Kredi Bakiyeniz: 3.808
Ettiği teşekkür sayısı: 28
25 Mesaja 48 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

teşekkürler

__________________
Im Come Back



İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
YigitHanSen isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 21 Haziran 2019, 05:20   #6 (permalink)
Onay Bekleyen Üye

Avatar Yok


Üyelik tarihi: 30 Aralık 2018
Mesajlar: 10[+]
Kredi Bakiyeniz: 621
Ettiği teşekkür sayısı: 1
0 Mesaja 0 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

teşekkürler
baburbbr isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 10 Ağustos 2019, 12:10   #7 (permalink)
xBo
Reddedilmiş Üye

Avatar Yok


Üyelik tarihi: 12 Mayıs 2019
Mesajlar: 31[+]
Kredi Bakiyeniz: 1.270
Ettiği teşekkür sayısı: 1
2 Mesaja 2 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

Teşekkürler
xBo isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 29 Eylül 2019, 08:01   #8 (permalink)
Yeni Üye

Avatar Yok


Üyelik tarihi: 24 Eylül 2017
Mesajlar: 16[+]
Kredi Bakiyeniz: 501
Ettiği teşekkür sayısı: 0
0 Mesaja 0 Kez Teşekkür Aldı

Standart Cevap: String Trim C++ using STL & Boost Library

Alıntı:
OzkanOzdemir Nickli Üyeden Alıntı Mesajı göster

Bir de şurada dikkate etmeniz gereken bir husus var.
Server dosyalarında kullanılan rtrim ve ltrim fonksiyonları hem geriye string değer döndürüyor hem de parametre olarak string değeri convert ediyor.
Bu yüzden std::string & rtrim yerine void rtrim kullanmanız daha mantıklı olacaktır.
Verdiğin gerekçe doğru değil.

void func1(std::string str);
void func1(std::string &str);
Bu iki fonksiyonun amaçları farklı. Ancak eğer heapte olmayan bir değişkeni bu fonksiyonlara gönderirsen, stl sınıfların move constructorları olduğu için bu fonksiyonlara verilen değişkenler zaten taşınır hiç bir farkları yok.

Yine aynı şekilde,
std::string func1(std::string str);
std::string& func1(std::string &str);
Bu iki fonksiyondan referance dönen hatalı kullanım zaten. Eğer ki fonksiyon içinde stackte yarratığın değişkenin referansını dönersen explicit olarak move etmezsen zaten undefined behaviour sonucuyla karşılaşırsın.

Burada en doğru kullanım birincisi eğer ki stackte trim yapılmış obje dönülecekse. Çünkü birincisinde stl sınıfın move constructor ı kopyalama yapmaz, stackteki değişkeni move eder.
eurox isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 29 Eylül 2019, 12:03   #9 (permalink)

PENTAGRAM - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 04 Temmuz 2017
Mesajlar: 368[+]
Ettiği teşekkür sayısı: 83
181 Mesaja 780 Kez Teşekkür Aldı
Kullanıcı Envanteri Renkli konu başlığı (aylık)Kişisel Rütbe Şekillendirme (kalıcı)İsim Şekillendirme (kalıcı)Sabit Konu (Haftalık)Server Tanıtımı Alt Forum (Aylık)

Standart Cevap: String Trim C++ using STL & Boost Library

[QUOTE=eurox;55617]Verdiğin gerekçe doğru değil.

Alıntı:
void func1(std::string str);
void func1(std::string &str);
Bu iki fonksiyonun amaçları farklı. Ancak eğer heapte olmayan bir değişkeni bu fonksiyonlara gönderirsen, stl sınıfların move constructorları olduğu için bu fonksiyonlara verilen değişkenler zaten taşınır hiç bir farkları yok.
Söylediğin senaryo "copy ellision" olarak geçer, eğer func1 fonksiyon çağrısından sonra str kısmına verdiğin parametreye refer etmiyorsan geçerli. Copy ellision c++17 standardına kadar mandatory bir olay değil. Hatta c++17 standardında dahi bazı caseler dışında mandatory değil. Dolayısıyla derleyicinin optimizasyon ayarlarına ve derleyicinin yazdığın pattern'i ne kadar iyi algılayabildiğine kalıyor olay. Özetle; Overload 1'e gelen her stack değişkeni move edilerek geliyor diye bir kaide yok. Bunun yerine rvalue overloadını yazıp değişkeni explicit move ile almak daha mantıklı, eğer ki istenen buysa.


Alıntı:
Yine aynı şekilde,
std::string func1(std::string str);
std::string& func1(std::string &str);

Bu iki fonksiyondan referance dönen hatalı kullanım zaten. Eğer ki fonksiyon içinde stackte yarratığın değişkenin referansını dönersen explicit olarak move etmezsen zaten undefined behaviour sonucuyla karşılaşırsın.


Burada en doğru kullanım birincisi eğer ki stackte trim yapılmış obje dönülecekse. Çünkü birincisinde stl sınıfın move constructor ı kopyalama yapmaz, stackteki değişkeni move eder.
Burada da 2. overloadda referans, alınan parametreye ise bir sıkıntı yok. Builder pattern'ında sıkça kullanılan bir durum. Diğer senaryolarda ise function-local olan variable thread_local veya static olarak declare edilmediyse "reference to temporary" durumuyla karşılaşırsın.

__________________

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.

'You' are only your limit.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] |
İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
| skype | [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
PENTAGRAM isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Geçerli forum için yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Source BOOST kütüphane kurulumu (BÜTÜN BOOST HATALARI İLE İLGİLİ ÖNCE BUNU OKUYUN!) PENTAGRAM Genel Yardım 146 06 Kasım 2019 02:24
[YARDIM][ISTEK] Client UIF Dosyalarında String ID'lerin Aktif Edilmesi. NiggaStoleMyWee Genel İstek 6 26 Ağustos 2018 15:08
Boost Hatası... lars Çözülen Konular 3 01 Kasım 2017 12:35
<boost/thread.hpp> hk byxox Çözülen Konular 3 23 Eylül 2017 01:04


Forum Site Hakkında
vBulletin® tarafından desteklenmektedir Versiyon 3.8.4
Telif hakkı ©2000 - 2019, Jelsoft Enterprises Ltd.

Sitemizdeki içerikler kopyalanmaya karşı DMCA ile korunmaktadır. DMCA.com Protection Status
İçerik sağlayıcı paylaşım sitelerinden biri olan kodevelopers.com Forum Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. kodevelopers.com hakkında yapılacak tüm hukuksal Şikayetler için [email protected] Mail adresimiz üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde kodevelopers.com yönetimi olarak tarafımızdan gereken işlemler yapılacak ve Avukatımız size dönüş yapacaktır.
© 2017 KO Developers ( by NERONLINEWORLD 2011/2013 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

Search Engine Friendly URLs by vBSEO 3.6.0