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

Преобразовать int в char * - C++

Восстановить пароль Регистрация
 
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
16.01.2013, 13:30     Преобразовать int в char * #1
Есть какое-то целое число.
Допустим 12451243.
Его необходимо преобразовать в строку.

У меня есть поле TenString (десят. строка), внутри поле Data.
Выклыдываю прототип функции toString и ее описание:
C++
1
       void toString(int);
C++
1
2
3
4
5
6
7
8
9
10
void TenString::toString(int _number) {
    int m = _number; int k = 0;
    while(m!=0) {
        k++; 
        m = m/10;
    }
    delete [] Data;
    Data = new char[k+1];
    sprintf(Data, "%d", _number);
}
Все прекрасно работает. Но хотелось бы, чтобы toString работала с каким-то аргументом, который будем передавать в функцию.
Что-то вроде
C++
1
toString(char *_str, int _number);
и уже потом будем присваивать то, что передали в функцию полю Data.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
16.01.2013, 13:53     Преобразовать int в char * #2
Во-первых, не ясно в чем проблема. Писать в строки умеем, функции знаем...
Во-вторых, сильно проще и безопаснее было бы использовать std::string и std::stringstream.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 14:07     Преобразовать int в char * #3
Цитата Сообщение от VladSharikov Посмотреть сообщение
чтобы toString работала с каким-то аргументом, который будем передавать в функцию.
Возвращайте указатель на полученную строку:
C++
1
2
3
4
5
char *toString(char *_str, int _number)
{
    ...
    return _str;
}
Igor3D
793 / 410 / 33
Регистрация: 01.10.2012
Сообщений: 2,073
16.01.2013, 14:19     Преобразовать int в char * #4
Цитата Сообщение от VladSharikov Посмотреть сообщение
Есть какое-то целое число.
C++
1
2
3
4
5
6
7
8
9
10
void TenString::toString(int _number) {
    int m = _number; int k = 0;
    while(m!=0) {
        k++; 
        m = m/10;
    }
    delete [] Data;
    Data = new char[k+1];
    sprintf(Data, "%d", _number);
}
По-моему просто фигней занимаетесь. Чему посвящен цикл while? Выделить точно такое число байт сколько цифр? Так это не имеет смысла т.к. память распределяется параграфами по 16 байт, меньше new не выделит. Просто sprintf, а за буфер (и его размер) отвечает вызывающий - и все. А Data застрелить, он с большой буквы, не по-сишному
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
16.01.2013, 14:30     Преобразовать int в char * #5
Igor3D, std::stringstream и станет по приплюснутому)
Пользоваться как любым потоком.
Igor3D
793 / 410 / 33
Регистрация: 01.10.2012
Сообщений: 2,073
16.01.2013, 14:35     Преобразовать int в char * #6
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Igor3D, std::stringstream и станет по приплюснутому)
Пользоваться как любым потоком.
То да, но если человек пока не умеет делать это "руками", то STL/algorithm ему только навредит а не поможет
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
16.01.2013, 14:38     Преобразовать int в char * #7
Igor3D,

Не по теме:

Ты думаш этому человеку надо знать? ему надо сдать. ИМХО

Igor3D
793 / 410 / 33
Регистрация: 01.10.2012
Сообщений: 2,073
16.01.2013, 14:42     Преобразовать int в char * #8
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Igor3D,

Не по теме:

Ты думаш этому человеку надо знать? ему надо сдать. ИМХО

Не по теме:

Ну кто знает, а может это действительно молодое дарование? А мы, получается, загубим талант

Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
16.01.2013, 14:44     Преобразовать int в char * #9
Igor3D,

Не по теме:

Возможно. Тогда мы тем более должны это дарование забить ногами. Нас и так много)И как по мне, в программировании нет таланта, это ремесло

VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
16.01.2013, 19:09  [ТС]     Преобразовать int в char * #10
v.a.l.i.d,
вот хотелось бы что-то такое
C++
1
2
3
char* TenString::toString(int _bob) {
///...
}
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
16.01.2013, 19:22     Преобразовать int в char * #11
А itoa уже не модно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
char* toString(int _bob)
{
    char result[255];
    return (itoa(_bob, result, 10));
}
 
int main()
{
    cout << toString(123451) << endl;;
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 10:01     Преобразовать int в char *
Еще ссылки по теме:

C++ Как преобразовать int в char
C++ Невозможно преобразовать параметр из int в const char
C++ Как преобразовать строку char в массив int?

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

Или воспользуйтесь поиском по форуму:
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
17.01.2013, 10:01  [ТС]     Преобразовать int в char * #12
Цитата Сообщение от Afflicted Посмотреть сообщение
А itoa уже не модно?
и не было модно.
itoa поддерживают далеко не все компиляторы
Делал сам в итоге
Рабочий вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
char* TenString::toString(int _number) {
    int m = _number; 
    int k = 0;
    char *result;
    while(m!=0) {
        k++; 
        m = m/10;
    }
    result = new char[k+1];
    sprintf(result, "%d", _number);
    return result;
}
Yandex
Объявления
17.01.2013, 10:01     Преобразовать int в char *
Ответ Создать тему
Опции темы

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