Tip dönüşümü
- C++ kursu
- Orta seviye
- Ders 97/116
- 5 dk
stringstream ile tip dönüşümü öğrenirsin.
Dizeden sayıya dönüşüm
Bir dizeyi sayıya çevirmenin güvenli yolu istringstream kullanmaktır. >> operatörü dizedeki sayıyı istenen türe dönüştürür.
Örnek: std::istringstream iss("42"); int n; iss >> n;. Burada "42" dizesi int türüne dönüşür ve n değişkenine konur. Dizede sayı olmayan karakterler varsa >> başarısız olur; bu yüzden dönüşüm sonrası akış durumunu kontrol etmek iyi bir alışkanlıktır. Bu yöntem, std::stoi gibi fonksiyonlara alternatif olarak daha fazla kontrol sunar.
Sayıdan dizeye dönüşüm
Bir sayıyı dizeye çevirmek için ostringstream kullanırsın. << ile sayıyı akışa yaz, .str() ile dizeyi al.
Örnek: std::ostringstream oss; oss << 42; std::string s = oss.str();. Burada 42 sayısı "42" dizesine dönüşür. Bu yöntem, bir sayıyı dize içine yerleştirmenin güvenli yoludur. std::to_string(42) fonksiyonu da aynı işi yapar ama ostringstream biçimlendirme seçenekleri sunar. İki sayıyı aynı dizede birleştirmek istersen oss << a << " " << b; yazarak tek akışta halledebilirsin.
Uygulama Dizeyi sayıya çevir, 8 ekle, geri yaz
Başlangıç kodunda metin dizesi "42" içeriyor. std::istringstream ile bu dizeyi int'e çevir. 8 ekle. Sonuç 50 olacak. std::ostringstream ile sayıyı dizeye çevir ve std::cout ile yazdır.
Başlangıç kodu
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string metin = "42";
// Dizeyi sayıya çevir, 8 ekle, sonucu yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string metin = "42";
std::istringstream iss(metin);
int sayi;
iss >> sayi;
sayi += 8;
std::ostringstream oss;
oss << sayi;
std::cout << oss.str();
return 0;
}Beklenen çıktı
50
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Dizeden sayıya çevir
std::istringstream iss("____"); int n; iss >> n;
std::istringstream iss("42"); int n; iss >> n;
Açıklama: Dize "42" sayıya dönüşür.
2 Dönüşüm yönünü eşle
| Kavram | Anlamı |
|---|---|
istringstream >> n |
Dizeden sayıya |
ostringstream << n |
Sayıdan dizeye |
.str() |
Dizeyi alma |
>> |
Akıştan çekme |
3 Bir int'i dizeye çevirmek için hangisi kullanılır?
int n = 42;- std::ostringstream Doğru cevap
- std::ifstream
- std::vector
- std::cout
Açıklama: ostringstream sayıyı dizeye çevirir.