Здравствуйте, _Winnie, Вы писали:
W> W> #include <strstream>
W> #include <iostream>
W> #include <string>
W> int main()
W> {
W> std::ostrstream ostr;
W> ostr <<1;
W> std::cout <<ostr.str();
W> return 0;
W> }
W>
#include <sstream>
#include <iostream>
#include <string>
int main()
{
std::ostringstream ostr;
ostr <<1;
std::cout <<ostr.str();
return 0;
}
И все в порядке безо всяких танцев с бубном вокруг '\0'.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
#include <strstream>
#include <iostream>
#include <string>
int main()
{
std::ostrstream ostr;
ostr <<1;
std::cout <<ostr.str();
return 0;
}
Однако, если сделать вот так, то все нормально.
ostr <<1 <<'\0';
Неужели я сам должен добавлять 0 в конце строки? Страуструп (The C++PL,TE 21.5.3) об этом не говорит
вот кусочек кода из strstream:
char *str()
{ // freeze and return pointer to character array
return (_Mysb.str());
}
Используй std::ostringstream. Старые потоки поддерживаются только для совместимости.
#include <iostream>
#include <sstream>
int main()
{
std::ostringstream ostr;
ostr << 1;
std::cout << ostr.str();
return 0;
}