- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
wstring& delphi::IntToStr(int integer, wstring& str)
{
if (0 == integer)
return str = L"0";
str.clear();
wstring sign(L"");
if (integer < 0)
{
sign = L"-";
integer = -integer;
}
else
sign = L"";
while (integer >= 1)
{
str.push_back( (integer % 10) + 48 );
integer /= 10;
}
str += sign;
std::reverse(str.begin(), str.end());
return str;
}
http://ideone.com/J73cEE
http://ideone.com/DfTD5o
А как тут будет оптимальнее?
boost::format
boost::lexical_cast
std::to_string
boost::spirit::karma
причем, первый может быть даже медленнее stringstream
второй, четвертый - однозначно быстрее
третий - как производитель компилятора уж реализует
(Видимо, d++ снова приоткрывает перед смертными подробности его нового стандарта цпп...)
стыдно не знать
Так что логичное решение ;)
Ну и хер, что медленный?
Очередной байтойоб?
продолжай писать велосипедный IntToStr
IntToStr сам себя не напишет
в принципе, 1.46 не такое уж и древнее старье, уж лехикал_цаст там точно есть, и даже (господи-помилуй) спирит 2.х
думаю, даже некое подмножество в 1.55 при особом желании можно собрать и под текущее 32-битное ненужно
а 64-разрядное ненужно, насколько я помню, использует шланг - этот то поддерживается
libboost_exception-bcb-1_55.lib
libboost_exception-bcb-d-1_55.lib
libboost_exception-bcb-mt-1_55.lib
libboost_exception-bcb-mt-d-1_55.lib
libboost_exception-bcb-mt-s-1_55.lib
libboost_exception-bcb-mt-sd-1_55.lib
libboost_exception-bcb-s-1_55.lib
libboost_exception-bcb-sd-1_55.lib
libboost_random-bcb-1_55.lib
libboost_random-bcb-d-1_55.lib
libboost_random-bcb-mt-1_55.lib
libboost_random-bcb-mt-d-1_55.lib
libboost_random-bcb-mt-s-1_55.lib
libboost_random-bcb-mt-sd-1_55.lib
libboost_random-bcb-s-1_55.lib
libboost_random-bcb-sd-1_55.lib
из хедер-онли:
shared_ptr - хуй
functional - хуй
spirit - qiй
больше ничего не проверял, организм противится
при построении самого буста он больше всего ругался на макросы и шаблоны
> functional - хуй
Ну и нахуй такой кастрированный буст нужен? :(
P.S. А каким билдером собирал?
ну в smart_ptr уже в 1.47 нет ничего для бормланда, чтобы сделать атомик каунтер
а более раннего буста у меня даже нет на компе, и качать влом
А ответ на твой вопрос - в рифме)
>> Ни разу не видел с билдера котятами.
Воспользуйся опиатами.
Конечно. Это же шестой ИЕ в мире компиляторов и сред разработки.
enjoy your vendor lock-in
музыка для души и для общего развития, а не для посвящения ей всей жизни
вот если бы композиторство получалось, тогда другое дело...
а быть просто исполнителем - не мечта, совсем
В крестобилдере есть всё, что есть в делфи. Он же вообще делфёвую либу юзает. Емнип, никто не переписывал VCL под кресты, просто ашек нагенерили. Ради этого даже сделали классы, порожденные от TObject волшебными (нельзя запилить на стеке, не работает множественное наследование, зато есть свойства).
P.S. А еще там есть ненавистный __fastcall: "Вызывай метод быстрее, я сказал быстрее, сука!"
В TP объекты (тип которых описывался словом object) хранились так же, как и обычные переменные. Было несколько вариантов размещения:
1. В секции данных программы, если переменная глобальная.
2. В стеке, если переменная локальная (объявлена внутри процедуры/функции).
3. В куче, если переменная имеет тип указателя на объект. В этом случае нужно закатывать солнце выделять память под объект вручную.
В Дельфи же добавили альтернативную модель, описываемую словом class, которая сама выделяет память в куче. Т. е. переменная типа class — это не сам объект, а указатель на него.
Абсолютно все эти __что_нибудь - непортабельная хуйня, которая работает только в данном конкретном компиляторе, и которую лучше никогда не юзать без веской на то причины.
> Делфя вроде, все объекты держит в куче, за исключением интерфейсов.
Ну вот и в дибилдере все, что порождено от TObject, нельзя запилить на стеке, только new, только хардкор.
Еще как юзает, если их много. Там только первые несколько штук в регистрах передаются.
http://en.wikipedia.org/wiki/X86_calling_conventions#Borland_fastcall
>> ...
>> else
>> sign = L"";
Нахуя? ¯\(°_o)/¯