2010-05-17 19 views

cevap

200

Tipik olarak bir stringstream'i sıfırlamak için, hem temel diziyi str ile boş bir dizgeye sıfırlamanız, hem de clear ile başarısızlık ve eof bayraklarını temizlemeniz gerekir.

parser.str(std::string()); 
parser.clear(); 

Tipik ne olur ilk >> dize sonuna geldiğinde ve başarıyla ilk kısa ayrıştırır rağmen, eof biti ayarlayarak olmasıdır. Akıştan sonra yapılan işlemler hemen başarısız olur çünkü akışın eof biti hala ayarlanır.

+0

evet, eof operatör sonra setleri >>() kullanılmış ve bazen eof de başarısız ayarlayabilirsiniz. Teşekkürler –

+21

Şahsen sanırım parser.str ("") 'daha açık, ama bu bir fikir meselesi. –

+4

Önce parser.clear() öğesini koymak için bu cevabı düzenlemeye değer olabilir, çünkü akışa içerik eklemeye yönelik diğer yöntemler (örn., Ayrıştırıcı << 5), ilk önce açıkça belirtilmediği sürece çalışmaz. –