c string conversion functions
Bu Öğretici, dizeyi int & double'a ve int dizesine vb. Dönüştürmek için kullanılabilecek C ++ Dize Dönüştürme İşlevlerini kapsar:
oops kavramı c # ile örnek
C ++ uygulamaları geliştirirken dizeyi tamsayı ve çift gibi sayılara dönüştürmek yaygındır.
Bu konu, dizeleri int & double'a ve sayısal değerleri bir dizeye etkili bir şekilde dönüştürmek için kullanılabilecek işlevleri kapsar.
=> Popüler C ++ Eğitim Serisini Buradan Okuyun.
Ne öğreneceksin:
C ++ Dize Dönüştürme İşlevleri
Uygulamaları C ++ kullanarak programladığımızda, verileri bir türden diğerine dönüştürmek gerekli hale gelir. Verilerin dönüşümü, mevcut verileri yeni bir türe dönüştürdüğümüzde hiçbir veri kaybolmayacak şekilde olmalıdır. Bu özellikle dize verilerini sayılara dönüştürdüğümüzde ve bunun tersi de geçerlidir.
Bu öğreticide, std :: string nesnesini integer ve double dahil olmak üzere sayısal veri türlerine dönüştürmek için çeşitli işlevleri tartışacağız.
Dizeyi C ++ 'da Sayısal Türlere Dönüştür
Genel olarak, dizeyi C ++ 'da sayılara dönüştürmek için iki yaygın yöntem vardır.
- Tüm sayısal veri türleri için yinelenen stoi ve atoi işlevlerini kullanma.
- Stringstream sınıfı kullanılıyor.
Her yöntemi ayrıntılı olarak tartışalım.
Stoi ve atoi İşlevlerini Kullanma
std :: string class, dizeyi tamsayıya, long, double, float, vs.'ye dönüştürmek için çeşitli işlevleri destekler. std :: string tarafından desteklenen dönüştürme işlevleri aşağıdaki gibi tablo haline getirilmiştir:
Fonksiyon | Açıklama |
---|---|
ayakta stol Stoll | Dizeyi tam sayıya dönüştürür (uzun ve uzun türler dahil). |
Atoi mercan adası mercan adası | Bayt dizesini tam sayıya dönüştürür (uzun ve uzun uzun türler dahil). |
durdu toz Stold | Bayt dizesini kayan nokta değerlerine dönüştürür (float, double ve long double türleri dahil). |
stoul kasvetli | Bayt dizesini işaretsiz tamsayıya dönüştürür (işaretsiz uzun ve işaretsiz uzun uzun türler dahil). |
Not: Bayt dizgisini (atoi) dönüştürmek için işlevler dışında, diğer tüm dönüştürme işlevleri C ++ 11'den itibaren mevcuttur. Şimdi dizeyi int'e ve dizeyi double'a dönüştürmek için dönüştürme işlevlerini tartışacağız.
İnt stoi () ve atoi () kullanarak dizge
ayakta ()
İşlev Prototipi: stoi (sabit std :: string & str, std :: size_t * pos = 0, int base = 10);
Parametreler:
str => Dönüştürülecek dizge
pos => İşlenen karakter sayısını saklamak için bir tamsayının adresi; varsayılan = 0
baz => Sayı tabanı; varsayılan = 0
Geri dönüş değeri: Belirtilen dizeye eşdeğer tamsayı.
İstisnalar: std :: invalid_argument => Dönüştürme yapılamıyorsa.
Std :: out_of_range => Dönüştürülen değer, sonuç türü aralığının dışındaysa.
Açıklama: Stoi () işlevi, argüman olarak bir dizge alır ve bir tamsayı değeri döndürür. Dönüştürülen değer aralık dışındaysa veya dönüştürme gerçekleştirilemezse bir istisna atar.
Bu işlevi daha iyi anlamak için bir programlama örneğini ele alalım.
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
Çıktı:
standlar ('53') 53'tür
standlar ('3.142') 3'tür
stoi ('31477 karakterli') 31477
manuel ve otomasyon testi mülakat soruları
Yukarıdaki programda stoi fonksiyonunu üç farklı dizge ile kullandık. Dize verilerini bir tamsayı değerine dönüştürürken, işlevin beyaz boşlukları veya diğer karakterleri attığını unutmayın.
Dolayısıyla, mystr2 (3.142) durumunda, işlev ondalık noktadan sonraki her şeyi attı. Benzer şekilde, mystr3 durumunda ('31477 karakterli'), sadece sayı dikkate alınmıştır. Dizinin diğer içerikleri atıldı.
atoi ()
İşlev Prototipi: int atoi (const char * str);
Parametreler: str => Null-sonlandırılmış bayt dizesine işaretçi.
Geri dönüş değeri:
Success => str argümanına karşılık gelen tamsayı değeri.
Başarısız => Eğer dönüştürülen değer aralık dışındaysa tanımsız.
0 => Dönüştürme yapılamıyorsa.
Açıklama: Bu işlev bir bayt dizesini bir tamsayı değerine dönüştürür. Atoi () işlevi, boşluk olmayan bir karakterle karşılaşılıncaya kadar tüm boşlukları atar ve ardından geçerli bir tam sayı gösterimi oluşturmak için karakterleri birer birer alır ve bunu bir tam sayıya dönüştürür.
Atoi İşlevi Örneği
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
Çıktı:
atoi ('24') 24'tür
atoi ('3.142') 3'tür
atoi ('23446 karakterli') 23446'dır
atoi ('3 içeren kelimeler') 0'dır
Yukarıdaki programda gösterildiği gibi, atoi işlevi argüman olarak bir bayt dizesini alır ve bunu bir tamsayı değerine dönüştürür. Beyaz boşluklar veya diğer karakterler atılır. Dönüştürülen değer aralık dışındaysa 0 döndürülür.
Stod () kullanarak ikiye katlanacak dizge
İşlev Prototipi: stod (sabit std :: string & str, std :: size_t * pos = 0);
Parametreler:
str => Dönüştürülecek dizge
pos => İşlenen karakter sayısını saklamak için bir tamsayının adresi; varsayılan = 0
Geri dönüş değeri: Belirtilen dizeye eşdeğer çift değer.
İstisnalar:
std :: invalid_argument => Dönüştürme yapılamıyorsa.
std :: out_of_range => Dönüştürülen değer, sonuç türü aralığının dışındaysa.
Açıklama: Bu işlev bir dizgeyi kayan nokta değerine dönüştürür. Stod () işlevi, boşluk olmayan bir karakterle karşılaşılıncaya kadar tüm boşlukları atar ve ardından geçerli bir kayan nokta sayı gösterimi oluşturmak için karakterleri birer birer alır ve onu kayan noktaya dönüştürür.
Bu işlevi gösteren bir örnek görelim.
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
Çıktı:
stod ('24') 24'tür
stod ('3.142') 3.142'dir
stod ('23446 karakterli') 23446'dır
Yukarıdaki program, 'stod' işlevinin kullanımını göstermektedir. Çıktı, belirtilen dizelerin dönüştürülmüş çift değerlerini gösterir.
Stringstream Class'ı kullanma
Dize akışı sınıfını kullanmak, dize değerlerini sayısal değerlere dönüştürmenin en kolay yoludur.
Sonraki eğitimlerimizde stringstream sınıfını ayrıntılı olarak öğreneceğiz. Aşağıda, dizenin sayısal değerlere dönüştürülmesini gösteren bir C ++ programı verilmiştir.
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< Çıktı:
Num değeri: 2508
DNum değeri: 3.142
Yukarıdaki programda, bir string nesnesi tanımladığımızı görüyoruz. Sonra bir dizge akımı nesnesi bildiririz ve dizeyi bu nesneye iletiriz, böylece dizge bir dizgi akımı nesnesine dönüştürülür. Daha sonra bu dizgi akışı nesnesi, dizi akışı nesnesini bir tam sayıya dönüştüren ‘>>’ operatörü kullanılarak bir tamsayı değerine aktarılır.
Benzer şekilde, dizeyi de double'a dönüştürdük. '>>' operatörü veri türünü desteklediği sürece, bir dizgeyi bir dizge akımı nesnesi kullanarak herhangi bir veri türüne dönüştürebiliriz.
İnt C ++ 'da dizeye dönüştür
Sayısal değerleri de dize değerlerine dönüştürebiliriz. Sayısal değerleri dize değerlerine dönüştürmenin iki yöntemi vardır ve bunları aşağıda tartışacağız.
To_string () İşlevini Kullanma
İşlev Prototipi: std :: string to_string (tür değer);
Parametreler: değer => Dönüştürülecek sayısal değer
Geri dönüş değeri: Dönüştürülen değeri tutan dize değeri.
İstisna: std :: bad_alloc atabilir
Açıklama: Bu işlev to_string (), argüman olarak iletilen sayısal değeri dize türüne dönüştürür ve dizeyi döndürür.
Bir C ++ programı kullanan bu işlevin bir örneğini görelim.
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
Çıktı:
Tamsayının dize gösterimi: 20 Float'ın dize gösterimi: 30.500000
varsayılan ağ geçidim neden çevrimdışı olmaya devam ediyor
Burada, her biri tamsayı ve kayan tipte iki değişkenimiz var. Daha sonra tamsayı ve float argümanı ile to_string metodunu iki kez çağırıp her iki değeri string değerlerine dönüştürüyoruz. Son olarak, dönüştürülen değerleri görüntülüyoruz.
Kayan nokta değerini dizeye dönüştürmenin, önemli basamakların sayısı to_string yöntemiyle sıfır olabileceğinden beklenmeyen sonuçlar verebileceğini unutmayın.
Stringstream Class'ı kullanma
Dize akışı sınıfını kullanarak, dizge akışı önce nesneye akış olarak sayısal bir değer ekleyen bir akış nesnesi bildirir. Daha sonra sayısal bir değeri dizeye dahili olarak dönüştürmek için 'str ()' işlevini kullanır.
Misal:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
Çıktı:
Tamsayıdan oluşan dizge: 26082019
İkiliden oluşan dizi: 3.142
Bu listede bir tamsayı ve bir çift değer tanımladık. Daha sonra sayısal değeri stringstream nesnesine dönüştürdüğümüz ostringstream nesnesine sahibiz. Bu '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Sonuç
Bu öğreticide, bir dizeyi sayısal türlere ve sayısal türleri dizeye geri dönüştüren dönüştürme işlevlerini tartıştık. Stoi (), stod (), atoi (), to_string () fonksiyonlarının fonksiyonlarını ve örneklerini detaylı olarak gördük. Ayrıca, bahsedilen dönüşümleri yapmamıza yardımcı olan bazı dizi sınıfı işlevleri ve yöntemlerini de tartıştık.
Önerilen okuma = >> Java'da Dizeyi Tam Sayıya Dönüştür ve Java'da Int'i String'e dönüştürme yöntemleri
Bir sonraki eğitimimizde, karakter veri türleri için dönüştürme işlevlerini öğreneceğiz.
=> Derinlemesine C ++ Eğitim Öğreticilerine Buradan Bakabilirsiniz.
Önerilen Kaynaklar
- Python Dizesi İşlevleri
- C ++ Karakter Dönüştürme İşlevleri: char'dan int'e, char'dan dizeye
- String Buffer ve String Builder Eğitimi ile Java String
- C ++ 'da Dize İşlevleri: getline, alt dize, dize uzunluğu ve Daha fazlası
- C # Ayrıştırma, Dönüştürme ve TryParse Yöntemlerini Kullanarak Dizeyi Int'ye Dönüştür
- VBScript Dize İşlevleri: VBScript inStr, Replace, Mid ve Trim İşlevleri
- Python String Split Eğitimi
- C # Dize Eğitimi - Kod Örnekleriyle Dize Yöntemleri