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

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

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

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

16.01.2013, 13:30. Просмотров 706. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2013, 13:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать int в char * (C++):

Преобразовать int в char - C++
Всем привет, пытаюсь разобраться с типами данных Интересует конвертация массива int в массив char уже часа с полтора сижу, постоянно...

Как преобразовать int в char - C++
Подскажите пожалуйста как преобразовать int в char Есть код к примеру: #include<iostream> using namespace std; int main(){ ...

Как преобразовать int в char? - C++
Прошу подсказать, как же все-таки преобразовывать int в char?

Как преобразовать Int в char*? - C++
Доброго времени суток. У меня есть переменная int, в которой однозначное число, как его преобразовать в char*?

Как int преобразовать в char? - C++
простите за глупый вопрос)) но у меня есть какое нибудь int x=1234 к примеру, как преобразовать это число в char s="1234"

Преобразовать число int в строку прописью char - C++
Например, вводим 40, 3 должно выдать sorok rubley tridcat kopeek. Пересмотрел много задач с похожей тематикой, но во-первых, ни одна не...

11
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
16.01.2013, 13:53 #2
Во-первых, не ясно в чем проблема. Писать в строки умеем, функции знаем...
Во-вторых, сильно проще и безопаснее было бы использовать std::string и std::stringstream.
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.01.2013, 14:07 #3
Цитата Сообщение от VladSharikov Посмотреть сообщение
чтобы toString работала с каким-то аргументом, который будем передавать в функцию.
Возвращайте указатель на полученную строку:
C++
1
2
3
4
5
char *toString(char *_str, int _number)
{
    ...
    return _str;
}
0
Igor3D
911 / 510 / 54
Регистрация: 01.10.2012
Сообщений: 2,539
16.01.2013, 14:19 #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 застрелить, он с большой буквы, не по-сишному
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
16.01.2013, 14:30 #5
Igor3D, std::stringstream и станет по приплюснутому)
Пользоваться как любым потоком.
0
Igor3D
911 / 510 / 54
Регистрация: 01.10.2012
Сообщений: 2,539
16.01.2013, 14:35 #6
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Igor3D, std::stringstream и станет по приплюснутому)
Пользоваться как любым потоком.
То да, но если человек пока не умеет делать это "руками", то STL/algorithm ему только навредит а не поможет
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
16.01.2013, 14:38 #7
Igor3D,

Не по теме:

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

0
Igor3D
911 / 510 / 54
Регистрация: 01.10.2012
Сообщений: 2,539
16.01.2013, 14:42 #8
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Igor3D,

Не по теме:

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

Не по теме:

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

0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
16.01.2013, 14:44 #9
Igor3D,

Не по теме:

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

0
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
16.01.2013, 19:09  [ТС] #10
v.a.l.i.d,
вот хотелось бы что-то такое
C++
1
2
3
char* TenString::toString(int _bob) {
///...
}
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
16.01.2013, 19:22 #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");
}
1
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
17.01.2013, 10:01  [ТС] #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;
}
0
17.01.2013, 10:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 10:01
Привет! Вот еще темы с ответами:

Как преобразовать строку char в массив int? - C++
Дана строка символов S, состоящая из чисел, разделенных пробелами Нужно выделить числа и засунуть их в массив типа int; Как можно это...

Число int в десятичной преобразовать в char - двоичной - C++
Помогите пожалуйста. Ситуация похожа, код прилагается - нужно число int в десятичной преобразовать в char - двоичной, совсем запутался в...

Невозможно преобразовать параметр из int в const char - C++
Приветствую, помогите пожалуйста исправить следующую ошибку: printf: невозможно преобразовать параметр 1 из &quot;int&quot; в &quot;const char *&quot; Хотя...

8-и значное число типа int преобразовать в строчку char\string - C++
Подскажите, есть ли какая-нибудь функция, которая загоняет число в строчку. Например есть 8-и значное число (тип int) и мне нужно его...


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

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

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