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

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

Войти
Регистрация
Восстановить пароль
 
nokados
27 / 27 / 5
Регистрация: 30.04.2012
Сообщений: 132
#1

Преобразовать массив цифр в строку для вывода на cout<< - C++

26.11.2013, 22:39. Просмотров 265. Ответов 4
Метки нет (Все метки)

Реализую класс длинных чисел (только+). Числа представляю в виде массиве, где каждый элемент это цифра.
Но не могу понять, как его вывести. Я делал так:

Внутри класса перегрузил оператор
C++
1
2
3
4
5
6
7
8
9
10
operator char*() const
    {
        char res[Size+2];
        for (int i=0;i<Size;i++)
        {
            res[i]=(char)L[i];//В L хранится длинное число
        }
        res[Size+1]='\0';//Конец строки - нулевой байт
        return res;
    }
а в выводе прописал:

C++
1
out<<(char*)S;//out - отдельный поток, для вывода в файл. S - длинное число
После таких махинаций выводится 'ММММММММ ММММММММ' вместо 17
помогите! Может нужно перегружать << но как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 22:39     Преобразовать массив цифр в строку для вывода на cout<<
Посмотрите здесь:

C++ Как преобразовать строку цифр в число?
Массив строк преобразовать в строку C++
ПреобразоваТЬ строку символов в массив C++
cout, два стека, нет вывода из второго C++
странный порядок вывода cout C++
C++ Как строку, заполненную числами, преобразовать в числовой массив?
C++ Как преобразовать цикл для вывода сотрудников по отделам
C++ Как преобразовать строку char в массив int?
Преобразовать двумерный массив в одномерный, удаляя каждую вторую строку C++
C++ Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout
Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout C++
C++ формат вывода cout << hex

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
26.11.2013, 22:46     Преобразовать массив цифр в строку для вывода на cout<< #2
Цитата Сообщение от nokados Посмотреть сообщение
out<<(char*)S
тут ты выводишь указатель, а не его знаение
nokados
27 / 27 / 5
Регистрация: 30.04.2012
Сообщений: 132
26.11.2013, 23:14  [ТС]     Преобразовать массив цифр в строку для вывода на cout<< #3
Цитата Сообщение от nokados Посмотреть сообщение
Size
это максимальное количество цифр в числе

Добавлено через 2 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
тут ты выводишь указатель, а не его знаение
Изменил на
C++
1
out<<*(char*)S;
Теперь выводит большую точку

Добавлено через 24 минуты
Попробовал добавить перегрузку оператора вывода (<<)
C++
1
2
3
4
5
6
ostream &operator<<(ostream &output, const Longint &abc)
{
    for (int i=abc.rSize-1;i>=0;i--)
        output<<abc.L[i];
    return output;
}
и еще добавил rSize - реальная длина числа

на выводе просто
C++
1
out<<S;
Однако теперь не выводит ничего.
ValeryS
Модератор
6482 / 4948 / 455
Регистрация: 14.02.2011
Сообщений: 16,389
26.11.2013, 23:20     Преобразовать массив цифр в строку для вывода на cout<< #4
Цитата Сообщение от nokados Посмотреть сообщение
res[i]=(char)L[i];//В L хранится длинное число
у тебя там только цифры от 0 до 9 ?
если да то пиши так
C++
1
res[i]=(char)L[i]+'0';
все дело в том что значения попадают в непечатные символы
а код числа 0 это 0х30
1 0х31 и т.д.
nokados
27 / 27 / 5
Регистрация: 30.04.2012
Сообщений: 132
26.11.2013, 23:37  [ТС]     Преобразовать массив цифр в строку для вывода на cout<< #5
Сделал без костылей перегрузкой <<
Все теперь работает (мой код выше)-до этого я неправильно изменял rSize
Yandex
Объявления
26.11.2013, 23:37     Преобразовать массив цифр в строку для вывода на cout<<
Ответ Создать тему
Опции темы

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