2012-12-15 32 views
14

Bu iki sınıf uygulamasından geçiyordum ve strstream sınıfının kullanımdan kaldırıldığını öğrendim.Strstream ile stringstream arasında fark

stringstream sınıfını yedek olarak kullanırsam, stringstream sınıf nesnesi arabelleğin derin bir kopyasını koruduğu için arabellekte nasıl oturum açtıkları arasında büyük bir fark vardır.

strstream ürününü stringstream sınıfındayken herhangi bir sorunla karşılaştı mı?

Bu kodun çıktısı ne olurdu ve neden? <strstream> den

#include<iostream> 
#include <sstream> 
#include <strstream> 



int main(){ 

    char strArr[] = "Soheb Khan is great"; 

    char stringArr[] = "TurboCharging"; 

    std::strstream strStream(strArr,19); 

    std::stringstream stringStream(std::string(stringArr,19)); 

    std::cout<<"Before Modification strArr= "<<strArr<<" & stringArr= "<<stringArr<<std::endl; 

    strStream << "Fifa 2012 is nice"; 


    stringStream << "Sometimes its sucks"; 


    std::cout<<"After Modification strArr= "<<strArr<<" & stringArr= "<<stringArr<<std::endl; 

    return 0; 


} 

cevap

8

sınıfları kullanımı iğrenç bulunmaktadır. Daha popüler olduklarında, kullanılan herhangi bir doğru üretim görmedim (sorunları tespit ettiğimde düzeltildiler). Ya insanlar dizgeyi std::ends kullanarak sonlandırmadılar ya da s.freeze(0) (ya da çoğu zaman ikisi de) kullanarak belleği salıvermediler. <sstream> sınıfı bir kopyasını oluştursa da, bunu bir sorun olarak görmedim. bellek ayırma aslında büyük boyutta tahsis etmek gerekirse veya bunların çoğu var çünkü, kolayca kontrol altına almak ve göndermek için özel bir sağlamak tamponları veri okuma veya yazılı olabilir ya, çünkü kullanım durumu için önemli olan durumda

akış tamponu. Örneğin, kolayca tahsis edilen bir bellek yığınına yazılan bir akış tamponu yazmak için önemsizdir:

İlgili konular