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

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

Войти
Регистрация
Восстановить пароль
 
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
#1

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

16.01.2013, 13:30. Просмотров 644. Ответов 11
Метки нет (Все метки)

Есть какое-то целое число.
Допустим 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
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
16.01.2013, 13:53     Преобразовать int в char * #2
Во-первых, не ясно в чем проблема. Писать в строки умеем, функции знаем...
Во-вторых, сильно проще и безопаснее было бы использовать std::string и std::stringstream.
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
858 / 444 / 38
Регистрация: 01.10.2012
Сообщений: 2,221
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
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
16.01.2013, 14:30     Преобразовать int в char * #5
Igor3D, std::stringstream и станет по приплюснутому)
Пользоваться как любым потоком.
Igor3D
858 / 444 / 38
Регистрация: 01.10.2012
Сообщений: 2,221
16.01.2013, 14:35     Преобразовать int в char * #6
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Igor3D, std::stringstream и станет по приплюснутому)
Пользоваться как любым потоком.
То да, но если человек пока не умеет делать это "руками", то STL/algorithm ему только навредит а не поможет
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
16.01.2013, 14:38     Преобразовать int в char * #7
Igor3D,

Не по теме:

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

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

Не по теме:

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

Не по теме:

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

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

Не по теме:

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

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
Сообщений: 542
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 в char
C++ Невозможно преобразовать параметр из int в const char
C++ Как преобразовать строку char в массив int?
C++ Преобразовать int в char

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

Или воспользуйтесь поиском по форуму:
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 *
Ответ Создать тему
Опции темы

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