Re: Глюки с std::ostrstream
От: Павел Кузнецов  
Дата: 28.10.03 13:32
Оценка: 9 (2)
Здравствуйте, _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"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Глюки с std::ostrstream
От: _Winnie Россия C++.freerun
Дата: 28.10.03 13:05
Оценка:
#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());
}
Правильно работающая программа — просто частный случай Undefined Behavior
Re: Глюки с std::ostrstream
От: Аноним  
Дата: 28.10.03 13:30
Оценка:
Используй std::ostringstream. Старые потоки поддерживаются только для совместимости.

#include <iostream>
#include <sstream>

int main()
{
  std::ostringstream ostr;
  ostr << 1;
  std::cout << ostr.str();
  return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.