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

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

Войти
Регистрация
Восстановить пароль
 
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
#1

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

11.06.2011, 02:31. Просмотров 427. Ответов 7
Метки нет (Все метки)

Всем доброй ночи.
Возникла проблема, никак не могу разобратся...
В общем есть класс с двумя интовыми полями, одно поле для целой части числа второе для дробной.
Нужно вернуть эти 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 02:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возврат числа в виде строки (C++):

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

Возврат строки из функции - C++
//char perfomers; //char _perfomers; char GetPerfomers(){strcpy(_perfomers,perfomers);return *_perfomers;} Есть у меня такая...

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

Введение в рекурсию. Заполнить массив типа char в виде десятичного числа, принимаемого в виде аргумента - C++
Пытался написать функцию, которая заполняет массив типа char в виде десятичного числа, принимаемого в виде аргумента. Но почему то...

Возврат строки из функции по указателю - C++
Здравствуйте. Обьясните пожалуйсто, почему компилятор выдает предупреждение при выполнении следующего кода и почему строка возвращается не...

Вывести на экран все строки данного массива одну за другой в виде целой строки - C++
Дан двумерный массив , состоящий из букв. 5 строк и 7 столбцов. Вывести на экран все строки данного массива одну за другой в виде целой...

7
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.06.2011, 10:59 #2
Действительно код неочень. А выделенная память будет освобождаться за пределами функции? Не очень хорошо. Либо воспользуйтесь std::string из STL, либо передавайте функции указатель на выделенную память, в которую она (функция) будет записывать результат.
1
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
12.06.2011, 06:32  [ТС] #3
А можешь подсказать как передать функции указатель на выделенную память?
0
Mиxaил
533 / 438 / 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;
}
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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;
}
1
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
12.06.2011, 12:08  [ТС] #6
и память отчищать ненадо?
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
12.06.2011, 12:10 #7
Внутри функции память не выделяется, следовательно и очищать нечего.
Снаружи функции если память под destination была выделена динамически (с помощью new), её обязательно надо освободить.
1
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180
12.06.2011, 12:22  [ТС] #8
всё работает, огромное спасибо
0
12.06.2011, 12:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2011, 12:22
Привет! Вот еще темы с ответами:

Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых - C++
Заданы три натуральных числа a, b, n. Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы (...

как записать числа n и k в виде составного числа nk - C++
как записать числа n и k в виде составного числа nk

Строки и файлы в виде функций - C++
Оформить каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров....

Вещественное число в виде строки - C++
Здравствуйте. Существует замечательная функция atof(). Есть ли обратная этой функции, т.е. которая вещ. число переводит в строку.


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

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

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