Как преобразовать long double в char*/char[] (C++)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12
Контактная информация:

Как преобразовать long double в char*/char[]

Сообщение Assuri »

Я пробовал так:

Код: Выделить всё

long double value = 5.0;
char str [MAX] = static_cast<char*>(value);

Пробовал и так:

Код: Выделить всё

long double value = 5.0;
char str [MAX] = static_cast<char[]>(value);


Результат везде один и тот же:
g7u12.cpp:51: error: invalid static_cast from type ‘long double’ to type ‘char*’


Что я не так делаю?
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Как преобразовать long double в char*/char[]

Сообщение edoc_modnar »

man sprintf. Не по-плюсовому, но просто и работает.
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Как преобразовать long double в char*/char[]

Сообщение Uncle_Theodore »

Ты хочешь написать число строчкой по цифрам? В C++ есть еще такая полезная вещь, называется stringstream. Погугли.
А каст делает совсем не то, что ты думаешь, я уже где-то говорил... :)
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12
Контактная информация:

Re: Как преобразовать long double в char*/char[]

Сообщение Assuri »

Uncle_Theodore писал(а):
16.07.2007 20:45
Ты хочешь написать число строчкой по цифрам?

Я хочу, чтобы число было строкой :)
В C++ есть еще такая полезная вещь, называется stringstream. Погугли.

Уже бегу...
А каст делает совсем не то, что ты думаешь, я уже где-то говорил... :)

А что он делает?

---------
Не в тему, но все же: в какой библиотеки g++ хранится функция _atold(), которая преобразует строку в число?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Как преобразовать long double в char*/char[]

Сообщение Uncle_Theodore »

Вот тут я делал одному отроку что-то похожее
http://www.nixp.ru/cgi-bin/forum/YaBB.pl?b...;num=1178806449

А cast пытается понять, можно ли интерпретировать байты в виде данных того типа, который ты от него хочешь.
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12
Контактная информация:

Re: Как преобразовать long double в char*/char[]

Сообщение Assuri »

Uncle_Theodore писал(а):
16.07.2007 20:56
Вот тут я делал одному отроку что-то похожее
http://www.nixp.ru/cgi-bin/forum/YaBB.pl?b...;num=1178806449

Спасибо, большое. С этой проблемой справились.
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12
Контактная информация:

Re: Как преобразовать long double в char*/char[]

Сообщение Assuri »

Uncle Theodore, в том примере из строки выходило число с типом int, а как сделать, чтобы long double?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Как преобразовать long double в char*/char[]

Сообщение Uncle_Theodore »

Так а в чем разница-то?

Код: Выделить всё

#include<iostream>
#include<sstream>
using namespace std;

int main()
{
  long double numero;
  string stroka;
  stringstream conv;

  numero = 2.718281828459045;
  conv << numero;
  conv >> stroka;

  cout << "Stroka is " << stroka << endl;

  return 0;
}
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Как преобразовать long double в char*/char[]

Сообщение serzh-z »

-DooM-, очень рекомендую boost::lexical_cast<>()
Спасибо сказали:
Ответить