Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
#1

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

13.06.2012, 08:44. Просмотров 1117. Ответов 13
Метки нет (Все метки)

Функция должна преобразовывать double в std::string.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 08:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предложите исходный текст функции DoubleToString (C++):

Считайте текст и выведите на экран исходный текст, а затем только четные предложения - C++
Считайте текст и выведите на экран исходный текст, а затем только четные предложения. Либо: Напишите программу, подсчитывающую, сколько...

Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение - C++
Помогите, пожалуйста!! очень нужно!! Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение.

Преобразовать исходный текст в текст с выровненными краями - C++
Дан текстовый файл in.txt, содержащий произвольный текст. Получить файл out.txt, содержащий исходный текст с выровненными краями....

ГОСТ 28147-89 Режим простой замены. Исходный текст не совпадает с дешифрованным - C++
Добрый вечер, уважаемы форумчане. Решил реализовать шифр ГОСТ 28147-89 Режим простой замены. Алгоритм шифрования взял с википедии....

Повторить исходный текст в файлах дважды, причем вторая копия должна содержать символы в обратном порядке - C++
Добрый вечер, суть задания заключается в следующем: указывается каталог, проверяется на наличие тхт файлов,а дальше удвоить текст в...

Нужен исходный код функции sinh() и cosh() из библиотеки math.h - C++
Нужен исходный код функции sinh() и cosh() из библиотеки math.h. Искал в библиотеке - не нашел. Задача: написать программу которая будет...

13
Петррр
5977 / 3414 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
13.06.2012, 09:19 #2
std::to_string
1
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
13.06.2012, 09:26  [ТС] #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'|
0
Петррр
5977 / 3414 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
13.06.2012, 09:26 #4
taras atavin, http://liveworkspace.org/code/4b1b159a0b1023ef217779eee9b22211
0
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
13.06.2012, 09:29  [ТС] #5
Меня не интересует интерпретатор. Мне нужна функция, которую проглотит мой компилятор. И которая решит поставленную подзадачу.
0
Петррр
5977 / 3414 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
13.06.2012, 09:32 #6
C++
1
2
3
4
5
6
std::string DoubleToString(double val)
{
    std::stringstream stream;
    stream << val;
    return stream.str();
}
1
ForEveR
В астрале
Эксперт С++
7984 / 4743 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.06.2012, 09:34 #7
Или же boost::lexical_cast<double>().
0
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
13.06.2012, 11:00  [ТС] #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;
}
0
ForEveR
В астрале
Эксперт С++
7984 / 4743 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.06.2012, 11:04 #9
taras atavin, Проблему можно было решить одним #include <sstream>, а не написанием кривоватого велосипеда
0
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
13.06.2012, 14:58  [ТС] #10
В чём он кривой?
0
ForEveR
В астрале
Эксперт С++
7984 / 4743 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.06.2012, 17:26 #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);
0
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
13.06.2012, 18:10  [ТС] #12
Цитата Сообщение от ForEveR Посмотреть сообщение
Во всем по большому счету.
Это не ответ. Есть вход, есть выход и есть время работы. А инклады с декларациями - не фактор сравнения.

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

Добавлено через 1 минуту
А вот когда сказать не чего, то защитники кривизны как раз на всё в болшом счёте и кивают.
0
ForEveR
В астрале
Эксперт С++
7984 / 4743 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.06.2012, 19:52 #13
taras atavin, Как минимум в том, что
1) Есть стандартные функции, следовательно не нужно писать своих велосипедов.
2) Стандартные функции проверены и в большинстве случаев работают быстрее.
0
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
14.06.2012, 07:28  [ТС] #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 на стринге. А вот как ты к потоку собираешься прикручивать шестнадцатеричную дробь и количество символов?
0
14.06.2012, 07:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 07:28
Привет! Вот еще темы с ответами:

Как выглядит исходный код функции sqrt стандартной библиотеки math.h? - C++
Здраствуйте. Мне надо исходный код функции sqrt стандартной библиотеки math.h . В интернете не могу найти понятный пример, а библиотеки...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив? - C++
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

Предложите упражнения по С++ мне - C++
Предложите задачи по С++ мне,хотел бы услышать задачи,заданные вами.

Иерархия классов: предложите примеры - C++
здраствуйте вот задание Найти в жизни и реализовать иерархию классов, требующую использования абстрактных классов и полиморфного...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.