SORU
8 Mart 2009, Pazar


Nasıl bir ostringstream yeniden?

Benim app birçok ayırma gibi yapmak zorunda değil, böylece temizlemek ve bir ostringstream (ve temel arabellek) yeniden kullanmak istiyorum. Nasıl ilk durumuna nesne (ör.

CEVAP
8 Mart 2009, Pazar


Geçmişte açık ve str dizisi kullandım:

// clear, because eof or other bits may be still set. 
s.clear();
s.str("");

Hem giriş hem de çıkış stringstreams için bir şey yapmış. Alternatif olarak, el ile temizlemek, başlamak için en uygun dizi arama o zaman

s.clear();
s.seekp(0); // for outputs: seek put ptr to start
s.seekg(0); // for inputs: seek get ptr to start

Çıktı tampon yerine şu anda ne üzerine yazarak bazı adetle sınırla str tarafından yapılan önleyecektir. Sonuçlar böyle

std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");

Eğer c-fonksiyonları için bir dize kullanmak istiyorsanız, std::ends, böyle bir sonlandırıcı null koyarak kullanabilirsiniz:

std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b" << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);

std::ends kaldırılan bir kalıntı yığını üzerinde doğrudan tahsis char bir dizi yazmak mümkün oldu std::strstream,. Sonlandırıcı null manuel olarak eklemek zorunda kaldı. Ancak, std::ends önerilmiyor, hala yukarıdaki durumlarda yararlı bence.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • FUzzyBUnnyBOoties

    FUzzyBUnnyBO

    3 EKİM 2007
  • SRT Photoshop Tutorials

    SRT Photosho

    19 Aralık 2012