| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Преобразование числа типа double |
| Автор: pablo 7.4.2005, 11:11 |
| Поскажите как преобразовать число из типа double в строку char*. Опытные люди сказали, что надо юзать ostrstream, но каким образом ??? Может у кого есть какие идеи ??? |
| Автор: Alastis 7.4.2005, 12:10 | ||||
Можно так:
или так:
|
| Автор: pablo 7.4.2005, 12:21 |
| Прекрасно, всё работает. Спасибо огромное. |
| Автор: Alastis 7.4.2005, 12:23 | ||
еще вот попробуй, если нужно через ostrstream:
|
| Автор: Fire-Plug 7.4.2005, 22:18 | ||||||
Ф-ция ostrstream::str() возвращает указатель на С-строку без 0-терминатора. Что нужно сделать в твоем решении - использовать streamsize ostrstream::pcount( ) в конструкторе string:
|
| Автор: yaja 8.4.2005, 17:56 |
| А есть способ сделать ето преобразование гораздо быстрее char *_gcvt( double value, int digits, char *buffer ); |
| Автор: Void 8.4.2005, 18:25 | ||
С каких пор? Он возвращает std::string, чтобы получить C-строку, надо stream.str().c_str() |
| Автор: srd 8.4.2005, 18:32 | ||
Зато это не переносимо |
| Автор: yaja 8.4.2005, 22:45 | ||
Не знал |
| Автор: Fire-Plug 10.4.2005, 07:40 | ||||||||||
Действительно, а с каких пор? ИМХО, когда strstream и производные от него ostrstream & istrstream были разработаны и введены в С++ в качестве потоковых классов. Наверное, это было то самое время, когда вместо заголовочного файла <strstream> приходилось использовать <strstream.h>, а о том, что будет такой std::string не знал даже А.Степанов. 1) Объявление метода ostrstream::str():
Вопрос: типы char * и std::string тождественны? С каких пор? 2) Семантика возвращаемого значения метода ostrstream::str():
Кто-нибудь пробовал использовать что-либо вроде:
Не пробовали? Ну и правильно. Дело может окончиться исключ. ситуацией с кодом EXCEPTION_ACCESS_VIOLATION. ЗЫ: Если бы контролируемая последовательность в классе strstream имела 0-терминатор, накой тогда был бы нужен метод pcount(). |
| Автор: Void 10.4.2005, 08:13 | ||
Хех, прошу прощения, не заметил разницы между strstream и stringstream. Но тогда встречный вопрос: зачем пользоваться deprecated классами strstream и файлом <strstream.h> вместо стандартного <sstream> и stringstream? |
| Автор: Fire-Plug 10.4.2005, 08:52 | ||
Просто пример был, где предлагалось сконструировать std::string с помощью только strstream::str(). Ну, на ошибку надо было указать. А так, конечно, deprecated классами пользоваться незачем: хлопотно да и error-prone. |