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

Возврат числа в виде строки - C++

Восстановить пароль Регистрация
 
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
11.06.2011, 02:31     Возврат числа в виде строки #1
Всем доброй ночи.
Возникла проблема, никак не могу разобратся...
В общем есть класс с двумя интовыми полями, одно поле для целой части числа второе для дробной.
Нужно вернуть эти 2 поля в виде char * .У меня получился какойто бред, причем понятия не имею почему...
надеюсь на вашу помощь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char * CDecimal::GetString()
{
    char * tmp;
    tmp=new char [20];
    char t[10];
    char t1[10];
    itoa(integer,t,10);
    itoa(broken,t1,10);
    strcat(tmp,t);
    strcat(tmp,t1);
 
    
    return tmp;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.06.2011, 10:59     Возврат числа в виде строки #2
Действительно код неочень. А выделенная память будет освобождаться за пределами функции? Не очень хорошо. Либо воспользуйтесь std::string из STL, либо передавайте функции указатель на выделенную память, в которую она (функция) будет записывать результат.
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
12.06.2011, 06:32  [ТС]     Возврат числа в виде строки #3
А можешь подсказать как передать функции указатель на выделенную память?
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
12.06.2011, 11:30     Возврат числа в виде строки #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    int n = 12345;
    
    //Число -> строка
    std::ostringstream ost;
    ost << n;
    std::string s_num = ost.str();
    std::cout << s_num << std::endl;
    n = 0;
    
    //Строка -> число
    std::istringstream ist(s_num);
    ist >> n;
    std::cout << n << std::endl;
     
    std::cin.get();
    return 0;
}
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.06.2011, 12:05     Возврат числа в виде строки #5
Ну вот как-то так.
C++
1
2
3
4
5
6
7
8
9
10
11
char* CDecimal::GetString(char *destination) {
  destination[0] = '\0'; // обнуление строки
  itoa(integer, destination, 10); // первое число
 
  char buffer[128]; // буффер для второго числа
  itoa(broken, buffer,10); // второе число в буффер
 
  strcat(destination, buffer);
 
  return destination;
}
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
12.06.2011, 12:08  [ТС]     Возврат числа в виде строки #6
и память отчищать ненадо?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.06.2011, 12:10     Возврат числа в виде строки #7
Внутри функции память не выделяется, следовательно и очищать нечего.
Снаружи функции если память под destination была выделена динамически (с помощью new), её обязательно надо освободить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2011, 12:22     Возврат числа в виде строки
Еще ссылки по теме:

C++ Вывести на экран все строки данного массива одну за другой в виде целой строки
Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых C++
C++ Вывести на экран матрицу порядка n (n=1..15) - элементы выводятся не в виде матрицы, а в виде строки

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

Или воспользуйтесь поиском по форуму:
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
12.06.2011, 12:22  [ТС]     Возврат числа в виде строки #8
всё работает, огромное спасибо
Yandex
Объявления
12.06.2011, 12:22     Возврат числа в виде строки
Ответ Создать тему
Опции темы

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