Форум программистов, компьютерный форум CyberForum.ru

Предложите исходный текст функции DoubleToString - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 08:44     Предложите исходный текст функции DoubleToString #1
Функция должна преобразовывать double в std::string.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.06.2012, 09:19     Предложите исходный текст функции DoubleToString #2
std::to_string
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 09:26  [ТС]     Предложите исходный текст функции DoubleToString #3
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|668|error: 'to_string' is not a member of 'std::string'|
. И как ты это объяснишь?

Добавлено через 2 минуты
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|668|error: 'to_string' is not a member of 'std'|
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.06.2012, 09:26     Предложите исходный текст функции DoubleToString #4
taras atavin, http://liveworkspace.org/code/4b1b15...7779eee9b22211
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 09:29  [ТС]     Предложите исходный текст функции DoubleToString #5
Меня не интересует интерпретатор. Мне нужна функция, которую проглотит мой компилятор. И которая решит поставленную подзадачу.
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.06.2012, 09:32     Предложите исходный текст функции DoubleToString #6
C++
1
2
3
4
5
6
std::string DoubleToString(double val)
{
    std::stringstream stream;
    stream << val;
    return stream.str();
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.06.2012, 09:34     Предложите исходный текст функции DoubleToString #7
Или же boost::lexical_cast<double>().
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 11:00  [ТС]     Предложите исходный текст функции DoubleToString #8
Теперь гога такая:
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|675|error: aggregate 'std::stringstream Stream' has incomplete type and cannot be defined|
Добавлено через 1 час 21 минуту
Проблема решена:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
std::string      DoubleToString            (double       x            )
{
        std::string Result;
 static std::string Digits[16]={"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
 static std::string Signs[2]={"-", "+"};
 static std::string p=".";
        int         i;
        int         b;
 b=abs((int)x);
 do
 {
  Result=Digits[b%16]+Result;
  b/=16.0;
 }while (b!=0);
 if (x<0.0)
 {
  Result=Signs[0]+Result+p;
  x=-x;
 }
 else
 {
  Result=Signs[1]+Result+p;
 }
 b=abs((int)x);
 x-=(double)b;
 for (i=8; i>0; --i)
 {
  b=((int)(x*16.0))%16;
  Result+=Digits[b];
  x*=16.0;
 }
 return Result;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.06.2012, 11:04     Предложите исходный текст функции DoubleToString #9
taras atavin, Проблему можно было решить одним #include <sstream>, а не написанием кривоватого велосипеда
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 14:58  [ТС]     Предложите исходный текст функции DoubleToString #10
В чём он кривой?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.06.2012, 17:26     Предложите исходный текст функции DoubleToString #11
taras atavin, Во всем по большому счету.
NAME
strtod, strtof, strtold - convert ASCII string to floating-point number

SYNOPSIS
#include <stdlib.h>

double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 18:10  [ТС]     Предложите исходный текст функции DoubleToString #12
Цитата Сообщение от ForEveR Посмотреть сообщение
Во всем по большому счету.
Это не ответ. Есть вход, есть выход и есть время работы. А инклады с декларациями - не фактор сравнения.

Добавлено через 2 минуты
В моей функции на входе double, на выходе str::striung, время преобразования не влечёт заметных тормозов проги. Та что же тогда кривого в моей функции?

Добавлено через 1 минуту
А вот когда сказать не чего, то защитники кривизны как раз на всё в болшом счёте и кивают.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.06.2012, 19:52     Предложите исходный текст функции DoubleToString #13
taras atavin, Как минимум в том, что
1) Есть стандартные функции, следовательно не нужно писать своих велосипедов.
2) Стандартные функции проверены и в большинстве случаев работают быстрее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 07:28     Предложите исходный текст функции DoubleToString
Еще ссылки по теме:

Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение C++
Нужен исходный код функции sinh() и cosh() из библиотеки math.h C++
C++ Преобразовать исходный текст в текст с выровненными краями

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.06.2012, 07:28  [ТС]     Предложите исходный текст функции DoubleToString #14
Цитата Сообщение от ForEveR Посмотреть сообщение
1) Есть стандартные функции, следовательно не нужно писать своих велосипедов.
Что стандартного в самописной
Цитата Сообщение от Петррр Посмотреть сообщение
C++
1
2
3
4
5
6
std::string DoubleToString(double val)
{
* * std::stringstream stream;
* * stream << val;
* * return stream.str();
}
?
Цитата Сообщение от ForEveR Посмотреть сообщение
2) Стандартные функции проверены и в большинстве случаев работают быстрее.
И это после прямого указания на тормоза действительно стандартной
C++
1
std::string::c_str()
. И мне не надо вылавливать на текстовом выводе каждые процента результирующей производительности приложения в целом. Мне надо, чтоб не было заметных тормозов, а в моём варианте тормоза уже не заметны. Если в две тысячи раз быстрее повернёшь ключ зажигания, то за часовую поездку съэкономишь от силы секунду. Имеет ли это для тебя значение? Здесь то же самое. Я вообще хотел стринг юзать только в одной разовой функции и поменял своё решение, когда убедился в том, что заметных тормозов он не вызывает, теперь у меня свой TextOut на стринге. А вот как ты к потоку собираешься прикручивать шестнадцатеричную дробь и количество символов?
Yandex
Объявления
14.06.2012, 07:28     Предложите исходный текст функции DoubleToString
Ответ Создать тему
Опции темы

Текущее время: 04:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru