Integer to String C/C++

Модератор: Модераторы разделов

Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)

Re: Integer to String C/C++

Сообщение Voral »

Wagan писал(а):
10.03.2010 11:31
Коллеги, а для чего, собственно, так сильно заморачиваться и путать автора темы? Разве задача пишется под ДОС, где каждый байт на счету? Лучше

Да понятно. Исходная задача в принципе решена.
Интересно стало

eddy писал(а):
10.03.2010 11:07
Есть:


Ну вот собственно добавляем символ для знака и умножаем на siseof(char)
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Integer to String C/C++

Сообщение eddy »

Voral писал(а):
10.03.2010 13:57
siseof(char)

А что, где-нибудь sizeof(char) != 1?
Это если вы какой-нибудь текст в юникоде будете выводить, то надо учитывать, сколько байт одна буковка займет (поэтому иногда и возникают затруднения у людей, пишуших софт для работы с юникодом). А для ASCII все просто.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: Integer to String C/C++

Сообщение BratSinot »

Разве задача пишется под ДОС, где каждый байт на счету?

Я тебе не Майкрософт чтоб свои проги не оптимизировать, это раз.
Во вторых у меня есть и графическая версия, и консольная. Ясное дело консольную можно в дос компилить.
Спасибо сказали:
Аватара пользователя
Wagan
Сообщения: 38
ОС: ALT Linux/FreeBSD/uCOS-II/Win

Re: Integer to String C/C++

Сообщение Wagan »

BratSinot писал(а):
10.03.2010 15:52
Я тебе не Майкрософт чтоб свои проги не оптимизировать

Тема отсутствия оптимизации в продуктах Майкрософт с одной стороны узко специализированная, с другой - явно флеймовая.
Лучше порадуйте, удалось ли решить текущие проблемы?
С уважением,
Ваган Саруханов
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: Integer to String C/C++

Сообщение BratSinot »

Wagan писал(а):
10.03.2010 16:59
Лучше порадуйте, удалось ли решить текущие проблемы?

Еще как удалось. Я даже понял почему у меня все криво было. Я просто для чисел использовал 'char'. Вот он и выводил по умолчанию символы, а не цифры.
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Integer to String C/C++

Сообщение eddy »

BratSinot писал(а):
10.03.2010 17:07
Wagan писал(а):
10.03.2010 16:59
Лучше порадуйте, удалось ли решить текущие проблемы?

Еще как удалось. Я даже понял почему у меня все криво было. Я просто для чисел использовал 'char'. Вот он и выводил по умолчанию символы, а не цифры.
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.

Код: Выделить всё

#  define SHRT_MIN      (-32768)
#  define SHRT_MAX      32767

Ну никак на 8 байт не тянет :)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Integer to String C/C++

Сообщение watashiwa_daredeska »

eddy писал(а):
10.03.2010 14:15
А что, где-нибудь sizeof(char) != 1?
Он по стандарту всегда 1. Ибо sizeof возвращает размер не в байтах, а в char'ах.
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: Integer to String C/C++

Сообщение AestheteAnimus »

watashiwa_daredeska писал(а):
10.03.2010 17:53
...Он по стандарту всегда 1. Ибо sizeof возвращает размер не в байтах, а в char'ах.

Нет, char'ы тут совсем непричем.

ISO/IEC 9899:TC2

6.5.3.4 The sizeof operator
....
2 The sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. The size is determined from the type of
the operand. The result is an integer. If the type of the operand is a variable length array
type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an
integer constant.

Спасибо сказали:
Аватара пользователя
Wagan
Сообщения: 38
ОС: ALT Linux/FreeBSD/uCOS-II/Win

Re: Integer to String C/C++

Сообщение Wagan »

BratSinot писал(а):
10.03.2010 17:07
Я даже понял почему у меня все криво было

Если не затруднит, обнародуйте конечную цель рождаемого продукта
С уважением,
Ваган Саруханов
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Integer to String C/C++

Сообщение smaharbA »

BratSinot писал(а):
10.03.2010 15:52
Я тебе не Майкрософт чтоб свои проги не оптимизировать


звучит сверхофигенно в свете сабжа...
Я конечно далек от мысли...(с)
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Integer to String C/C++

Сообщение NickLion »

BratSinot писал(а):
10.03.2010 17:07
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.

Кстати, если беспокоитесь об оптимизациях исполнения, то откажитесь от fstream в пользу fscanf/fprintf. fstream существенно медленнее.
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: Integer to String C/C++

Сообщение BratSinot »

NickLion писал(а):
11.03.2010 08:42
BratSinot писал(а):
10.03.2010 17:07
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.

Кстати, если беспокоитесь об оптимизациях исполнения, то откажитесь от fstream в пользу fscanf/fprintf. fstream существенно медленнее.

Я знаю, поэтому у меня две версии на C++ и на C99 =) На C99 работает все естественно быстрее.

Wagan писал(а):
10.03.2010 23:21
BratSinot писал(а):
10.03.2010 17:07
Я даже понял почему у меня все криво было

Если не затруднит, обнародуйте конечную цель рождаемого продукта

http://sourceforge.net/projects/xogame/
Там переменная 'battle' в лог записывается.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Integer to String C/C++

Сообщение eddy »

А вы хотите, чтобы лог можно было читать пользователю? Может, просто создать структуру, в которую записывать данные, необходимые для сохранения, а потом эту структуру в файл и записывать?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: Integer to String C/C++

Сообщение BratSinot »

eddy писал(а):
11.03.2010 15:21
А вы хотите, чтобы лог можно было читать пользователю? Может, просто создать структуру, в которую записывать данные, необходимые для сохранения, а потом эту структуру в файл и записывать?

Нет я хотел чтоб переменная 'battle' типа 'char' записывала как числа, а не как ASCII код.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Integer to String C/C++

Сообщение eddy »

Ладно, вашу проблему еще на предыдущей странице решили. Кстати, если уж вы учитесь программированию в С++, обратите внимание на возможность форматирования ввода-вывода класса std.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Integer to String C/C++

Сообщение watashiwa_daredeska »

AestheteAnimus писал(а):
10.03.2010 18:07
Нет, char'ы тут совсем непричем.
Причём.
(ISO/IEC 14882:1998(E)) писал(а):1.7 The C++ memory model
The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to con-
tain any member of the basic execution character set and is composed of a contiguous sequence of bits, the
number of which is implementation-defined.

5.3.3 Sizeof
The sizeof operator yields the number of bytes in the object representation of its operand. The operand
is either an expression, which is not evaluated, or a parenthesized type-id. The sizeof operator shall not
be applied to an expression that has function or incomplete type, or to an enumeration type before all its
enumerators have been declared, or to the parenthesized name of such types, or to an lvalue that designates
a bit-field. sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;
Спасибо сказали: