Özet - Stringstream
- C++ kursu
- Orta seviye
- Ders 99/116
- 5 dk
istringstream ve ostringstream'i birleştirerek bir CSV ayrıştırıcı yazarsın.
Özet - Stringstream
Bu grupta dize akışlarını öğrendin. istringstream dizeden okur, ostringstream dizeye yazar, stringstream ikisini birden yapar.
Tip dönüşümünde istringstream ile dizeyi sayıya, ostringstream ile sayıyı dizeye çevirirsin. Biçimlendirme için std::fixed ve std::setprecision araçlarını kullanırsın. Şimdi iki ödevle öğrendiklerini pekiştireceksin: önce dizeden sayı ayrıştırma, sonra sayı biçimlendirme.
Uygulama Dizeden sayıları ayıkla ve topla
Başlangıç kodunda veri dizesi "5 10 15" içeriyor. std::istringstream ile üç sayıyı çek, topla ve std::cout ile yazdır.
Başlangıç kodu
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string veri = "5 10 15";
// Sayıları ayıkla ve topla
return 0;
}Örnek çözüm
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string veri = "5 10 15";
std::istringstream iss(veri);
int a, b, c;
iss >> a >> b >> c;
std::cout << a + b + c;
return 0;
}Beklenen çıktı
30
Uygulama Sayıyı biçimli dizeye çevir
Başlangıç kodunda pi değişkeni 3.14159. std::ostringstream ile std::fixed ve std::setprecision(2) kullanarak pi'yi biçimle. .str() ile dizeyi al ve std::cout ile yazdır.
Başlangıç kodu
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
int main() {
double pi = 3.14159;
// pi'yi iki ondalıkla biçimle ve yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
int main() {
double pi = 3.14159;
std::ostringstream oss;
oss << std::fixed << std::setprecision(2) << pi;
std::cout << oss.str();
return 0;
}Beklenen çıktı
3.14
Bölüm sonu
Dize akışlarını tamamladın. Artık istringstream ile dizeden okuyabiliyor, ostringstream ile dizeye yazabiliyor, stringstream ile iki yön kullanabiliyorsun.
Tip dönüşümü ve biçimlendirme için dize akışları güçlü araçlardır. Sonraki gruplarda move semantiği ve operatör aşırı yükleme gibi ileri konular seni bekliyor. Öğrendiğin akış kavramı, hem dosya hem dize işlemlerinde ortaktır; bu yüzden çok değerlidir.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Akışı rolüne eşle
| Kavram | Anlamı |
|---|---|
istringstream |
Dizeden okuma |
ostringstream |
Dizeye yazma |
stringstream |
İki yön |
.str() |
Dizeyi alma |
2 str() ile dizeyi al
std::string sonuc = oss.____();
std::string sonuc = oss.str();
Açıklama: .str() akışın dizesini verir.