?取得std::ostringstream里的內(nèi)容可以通過str()和str(string&)成員函數(shù)。由于str()返回的是臨時(shí)對象,因而會有如下誤用:
const
?
char
*
?pBuffer?
=
?oss.str().c_str();
pBuffer指向的內(nèi)存已被析夠!
測試代碼:
????????ostringstream?oss;
????????oss?
<<
?
"
something?you?like
"
?
<<
?endl;
//
?can't?work!
????????
const
?
char
*
?szData1?
=
?oss.str().c_str();
????????
//
work!
????????
string
&
?ss?
=
?oss.str();
????????
const
?
char
*
?szData2?
=
?ss.c_str();
例子:
用std::ostringstream獲取整個(gè)文件的內(nèi)容:
????????ifstream?ifs(
"
in.txt
"
);
????????istream_iterator
<
char
>
?inpos(ifs);
????????istream_iterator
<
char
>
?endpos;
????????ostream_iterator
<
char
>
?
out
(oss);
????????std::copy(inpos,?endpos,?
out
);
//
有些情況下需要取得buffer:
????????
string
&
?ss?
=
?oss.str();
????????
const
?
char
*
?szData?
=
?ss.c_str();
?

