Bir kayıt sisteminin parçası olarak özel bir std::streambuf
yazıyorum. Ancak, ben doğru biçimlendirilmiş olan bir akıştan çıkışının ilk parçası ile sorun yaşıyorum. Bu kullanarak g ++ Derlemestd :: ostream biçimlendirilmemiş const char * ilk kez kullanıldığında
#include <iostream>
int main()
{
std::streambuf *coutbuf = std::cout.rdbuf();
std::ostream(coutbuf) << "test" << ": writing to cout using a separate ostream." << std::endl;
return 0;
}
: Burada
herhangi özelstreambuf
veya
ostream
sınıflar kullanmayan bir azalma test durum
$ g++ --version
g++ (Ubuntu 4.4.1-4ubuntu8) 4.4.1
$ g++ -o fail reduced-case.cpp
$ ./fail
0x400c80: writing to cout using a separate ostream.
Not bu değişmez ilk dize ("test hazır ikinci dize doğru biçimlendirilmiş sırasında ") genel bir işaretçi (dizinin adresi olarak biçimlendirilirken, hex çıkışıdır).
Düşünebildiğim tek şey, yeni oluşturulmuş bir std::ostream
'u (örneğin, bir değişkene koymadan) doğrudan kullanmak için geçersiz olduğudur. Bu durumda, tam olarak neyin geçersiz kıldığını bilmek isterim (özellikle iyo-akışlarla ilgisi olmadığını, bunun yerine kurucularla veya bir şeyle yapılan değerlendirme sırasını veya etkileşimini). Sorun bu değilse, o zaman nedir?