- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
function naq(a:integer;n:integer;m:integer):string;
var astr:string;
begin
astr:=inttostr(a);
case m of
1: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*1)+'*p^'+inttostr(n+1);
2: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*2)+'*p^'+inttostr(n+1)+'+'+inttostr(a*1)+'*p^'+inttostr(n+2);
3: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*3)+'*p^'+inttostr(n+1)+'+'+inttostr(a*3)+'*p^'+inttostr(n+2)+'-'+inttostr(a*1)+'*p^'+inttostr(n+3);
4: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*4)+'*p^'+inttostr(n+1)+'+'+inttostr(a*6)+'*p^'+inttostr(n+2)+'-'+inttostr(a*4)+'*p^'+inttostr(n+3)+'+'+inttostr(a*1)+'*p^'+inttostr(n+4);
5: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*5)+'*p^'+inttostr(n+1)+'+'+inttostr(a*10)+'*p^'+inttostr(n+2)+'-'+inttostr(a*10)+'*p^'+inttostr(n+3)+'+'+inttostr(a*5)+'*p^'+inttostr(n+4)+'-'+inttostr(a*1)+'*p^'+inttostr(n+5);
6: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*6)+'*p^'+inttostr(n+1)+'+'+inttostr(a*15)+'*p^'+inttostr(n+2)+'-'+inttostr(a*20)+'*p^'+inttostr(n+3)+'+'+inttostr(a*15)+'*p^'+inttostr(n+4)+'-'+inttostr(a*6)+'*p^'+inttostr(n+5)+'+'+inttostr(a*1)+'*p^'+inttostr(n+6);
7: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*7)+'*p^'+inttostr(n+1)+'+'+inttostr(a*21)+'*p^'+inttostr(n+2)+'-'+inttostr(a*35)+'*p^'+inttostr(n+3)+'+'+inttostr(a*35)+'*p^'+inttostr(n+4)+'-'+inttostr(a*21)+'*p^'+inttostr(n+5)+'+'+inttostr(a*7)+'*p^'+inttostr(n+6)+'-'+inttostr(a*1)+'*p^'+inttostr(n+7);
8: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*8)+'*p^'+inttostr(n+1)+'+'+inttostr(a*28)+'*p^'+inttostr(n+2)+'-'+inttostr(a*56)+'*p^'+inttostr(n+3)+'+'+inttostr(a*70)+'*p^'+inttostr(n+4)+'-'+inttostr(a*56)+'*p^'+inttostr(n+5)+'+'+inttostr(a*28)+'*p^'+inttostr(n+6)+'-'+inttostr(a*8)+'*p^'+inttostr(n+7)+'+'+inttostr(a*1)+'*p^'+inttostr(n+8);
9: naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*9)+'*p^'+inttostr(n+1)+'+'+inttostr(a*36)+'*p^'+inttostr(n+2)+'-'+inttostr(a*84)+'*p^'+inttostr(n+3)+'+'+inttostr(a*126)+'*p^'+inttostr(n+4)+'-'+inttostr(a*126)+'*p^'+inttostr(n+5)+'+'+inttostr(a*84)+'*p^'+inttostr(n+6)+'-'+inttostr(a*36)+'*p^'+inttostr(n+7)+'+'+inttostr(a*9)+'*p^'+inttostr(n+8)+'+'+inttostr(a*1)+'*p^'+inttostr(n+9);
end;
end;
а если нужно использовать локаль пользователя? (скажем, разделитель .,)
А, ещё же есть format(s, [args]), по аналогии с сишкофункцией. Даже с проверками типа, только проверки все в период выполнения, а жаль.
// std::ostream & o
o << somestring << somenumber << somedate << someuserclass;
я даже не акцентирую, какого конкретно типа каждый из аргументов, может somenumber это пользовательский класс для комплексного числа
дельфишный format позволяет в качестве аргумента передать свой собственный класс, который сам знает как себя выводить? а в С++ можно не только это, но и есть возможность повлиять на вывод конкретного типа, используя фасет в локали.
1)Использование операции побитового сдвига выносит мозг.
2)Форматирование строк получается гораздо длиннее.
а потом на потоки С++
а потом опять на говнокод выше
а потом снова на потоки С++
delphi:
astr:=inttostr(a);
naq:=astr+'*p^'+inttostr(n)+'-'+inttostr(a*2)+'*p^'+inttostr(n+1)+'+'+ inttostr(a*1)+'*p^'+inttostr(n+2);
C++:
// std::ostringstream oss;
std::string const p = "*p^";
oss << a << p << n << '-' << (a*2) << p << (n+1) << '+' << a << p << (n+2);
а я программист который каждый день работает за денюшку на С++
поверь, формат удобней потоков только когда надо выводить числа/строки с конкретными размерами полей и заполнением/выравниванием, хотя потоки и это позволяют
обычно как раз надо вывести в поток что то переменной длины
строку лога или кусок xml
как замена сишному небезопасному printf есть boost::format, используется реально крайне редко
так что не аргумент
stream+var1+var2+lol;
Все в бой собрались быстро.
Готов дуть в рог Хеймдалль,
Но он весь в чём-то склизком.
мне надо вывести
log << "received " << bytes_count << " bytes from client " << socket.endpoint() << std::endl;
в понимаю, что дельфишном format это будет что то типа (внимание, псевдокод)
log := format('received %u bytes from client %s\n', bytes_count, socket.endpoint().ToString);
отлично
ой, неплохо было бы еще ошибку вывести
переписываем С++
log << "received " << bytes_count << " bytes from client " << socket.endpoint() << " with error " << ec << std::endl;
отлично
теперь дельфи
log := format('received %u bytes from client %s with error %s\n', bytes_count, socket.endpoint().ToString(), ec.ToString());
дельфепроблемы - приходится изменять код в 2 местах, а не в 1, error-prone
дельфепроблемы - каждый объект обязан иметь метод ToString
Крестопроблемы: каждый объект должен уметь выводить себя в поток. Так что, имхо, оверхед примерно одинаковый.
Зато объект с ToString можно и на компонент гуя вывести, а в крестах объект, умеющий себя выводить в поток, не сможет вывести себя на гуй.
std::string s = boost::lexical_cast<std::string>(myobjec t_which_can_into_stream_only);
насколько просто сделан lexical_cast и сколько строк кода заняла бы твоя собственная функция оставлю тебе в виде домашнего задания
фу, бля, костыль...
принимать натощак
Ещё раз сравни оба подхода, и подумай, почему в современных платформах используется ToString: единообразие применения объектов где угодно. Без дополнительных телодвижений.
я тебе показал, что если объект выводит себя в поток, абсолютно никаких проблем показать его в гуй, использовав tostring(obj), причем показать его в нужной локали, а не в той, в которой умный школьник его задумал, когда писал метод ToString
но раз тебя метод ToString так отлично устраивает, я тебе рекомендую в дельфи вызвать метод ToString у переменных типа int, double и даже string
ой... нельзя чтоли? как же так
и да, оба подхода уже сравнены:
http://govnokod.ru/8664#comment122893
4)Куча лишних вызовов функций.
stream.operator<<(stream, param1).operator<<(stream, param2).operator<<(stream, param3).operator<<(stream, param4)... .operator<<(stream, param100500);
а как ты думаешь насколько эффективно по памяти .operator <<().operator <<() для потока и operator +(), operator+(), operator+() для дельфишной строки?
Одинаково.
http://govnokod.ru/8664#comment122833
Когда пишешь s:=s1+s2+s3+...+sn, то всё пишется в один временный объект, общий для всех, квадратичного расхода памяти нету.
а что будет, если s1, s2, s3... - объекты моего типа mystring?
Лишнее копирование.
И даже не потому, что там коровьи строки, а потому, что функция сложения строк знает адрес приёмника.
Вспоминается рассказ про то, как русские школьники запустили в американскую школу трёх свиней, на спинах у которых были нарисованы цифры 1, 2 и 4, после чего пиндосы два месяца искали свинью под номером 3...
Это для внушительности большего числа пунктов.
ну и позволяют легко и безопасно менять поведения вывода объектов, не изменяя сами объекты
У тебя какая-то нездоровая кукареку-активность проявилась в попытках найти говнокод в строках Дельфи. К чему это?
как раз к твоим нападкам о том, что С/С++ говно, а дельфи идеал
у нас в конторе есть дельфишный отдел, пишут на дельфи 7, собирают версии bat-файлами, сложное управление солюшеном из нескольких проектов, о каких бы то ни было переходах на распоследние версии RAD с перегрузкой операторов, шаблонами и контейнерами/паттернами речь никогда не зайдёт
трагичное зрелище
если бы не огромная куча UI приложений, написанных на VCL и куче компонент, которые надо постоянно дописывать, дельфишного отдела бы давно не было
слоупоки и/или жлобы
> собирают версии bat-файлами
контора уровня ЖЭК, не могут нанять хотя бы одного, кто can into make?
расскажи в конторе какого уровня работаешь ты, покупают ли тебе каждый новый билд каждого ПО, которое ты используешь для работы?
пушков, ты?
> покупают ли тебе каждый новый билд
покупают, хотя я не настаиваю на bleeding edge
ну расскажи, какой комплект софта тебе закупают и сколько он стоит, купили ли тебе уже последнюю RAD Studio, если купили, то почему ты не уверен, парсит ли дельфи разделитель дробной части? значит не дельфи... ой я запутался
какое сверхмощное IDE тебе купили для js?
WebStorm?
бухгалтер его ЖЭКа на обеде, так что подождём
с==3
когда ты приходишь в паспортный стол или налоговую, или покупать билет в ржд или метро, или еще овер 9000 мест, где стоят убогие компьютеры максимум пентиум4 с запущенными всевозможными АРМами синенькими - думаешь они все делаются на передовых языках передовыми средствами 2012 года?
я думал ты похвалишься "вы все неудачники, моя контора <ХХХ> делает охуенные проекты передовыми инструментами за много миллионов и я вас всех в рот ебал", а мы бы за тебя порадовались
и судя по реакции попал в точку.
> я думал ты похвалишься
а хрен ли тут хвалиться? что не работаю на проебись-шаражку, где хорошие компы дронам не выдают, чтобы не спиздили?
> паспортный стол или налоговую, или покупать билет в ржд или метро
и у первой группы и у второй бабло есть
типичная позиция школьника-максималиста, который оценивает весь мир в бинарной логике
Не заинтересован менеджмент в вашей производительности труда. Пока до дыр свои АРМ не протрете не будет апгрейда. Это совпром и ГУП, детка.
ищи его на гейдеве, это как раз профессиональный ресурс твоего уровня
вопросы об апгрейде инструментария ставит начальник группы начальнику отдела, затем вопрос поднимается выше до департамента, а уже начальник департамента способен эти вопросы ставить перед коммерческим директором, которому лишь надо знать сколько в этом году дать бабла на ПО на весь департамент
ограничений никаких нет, нет желания начальника группы дельфистов, который не ставит вопрос самостоятельно и не отвечает на ежегодное письмо "а что нам надо продлить из лицензий на следующий год, а что купить", там молодых дерзких и успешных юношей, как ты, нет, они 10 лет пишут на дельфи 7 и у них всё работает, каждое ТЗ заказчика исполняется в срок - вот они и не хотят переходить на передовые ИДЕ с новыми багами и кучей новых проблем с развертыванием и сдачей заказчику
если для тебя эта вертикаль кажется слишком напыщенной, или к тебе сам коммерческий директор приходит спросить перед обедом "слушай давай твой джавоскрипт на паскале мы теперь будем писать вот в этом, я уже купил, уверен тебе понравится", то мне нечего тебе сказать - такие вопросы ставятся снизу, от исполнителей работы
и если тебе, как стажеру, уже всё купили и настроили, даже асичьку, это не значит, что так случилось по личному желанию директора
повзрослеешь - поймешь
Еще остались в природе те, которые боятся слезть с шестой студии?
или ты сейчас тоже будешь заявлять "только 2010! no thinking required!"
предвосхищая твой вопрос - 2010 официально есть из коробки мсдн, но стоит только дома
и да, жду хотя бы намёка на твою нешарашку
или круг заказчиков
к каким негативным последствиям это приведёт? самозабанишься?
просвети нас, глупых
я теряюсь в догадках
гуру паскаля и джавоскрипта, знающий персонажей гейдева не понаслышке, стремающийся раскрыть какие же секретные проекты он делает на верхнем этаже кремля, наверное что то очень серьезное
У ТЕБЯ БУДЕТ БАТХЕРТ ОТ КРЕСТОПРОБЛЕМ. только и всего. иди за вазилином
а то там полное уныние
здесь поподробнее, пожалуйста. по скольку вас, клоунов, фасуют?
ты пушкова уже слабее напоминаешь, и это отнюдь не комплимент
ну напрягись
скажи хотя бы "делаем сайты на заказ, среди заказчиков владельцы заводов, газет, пароходов, я отвечаю за то то", ну или "делаем убийцу документооборота IBM на дельфе, нужны формочки, будильники каждые 3 часа и интенсивный обмен с субд"
я все пойму и прощу
ты видишь, для тебя даже давно раздел зарезервирован, гюльчатай анонимный
http://lurkmore.ru/Govnokod.ru#bugmenot
вот почему Тарасу не стыдно предстать каким есть - закончил институт, судя по всему аспирант, имеет академический интерес к разным языкам и мат аппарату, но на практике делает только программки для души
со знанием такого малораспространенного языка как ада я его могу даже кое-куда порекомендовать
разве это плохо? нет, он молодец
что молчишь?
какой вес я могу придавать твоим словам, если тебе сложно очертить свою профессиональную деятельность? ты же там замахивался на 10 миллионов строк дельфишного кода, небось устал пока писал, объем сравним с серьезным офисным пакетом - чего утаиваешь, намекни
я ни хера в твой лепет не хочу вникать, поди в школу писать изложение
– вот это неожиданно для 2011
http://demotivation.me/images/20111130/vnmbdn6mkxos.jpg
и кого же?
найдешь или вспомнишь слоупока, который на ней застрял - увидишь то самое, что происходит в уголке дельфи 7, но незамутненным климактерической неприязнью к паскалю
мы не боимся. мы не можем по техническим причинам. не тролль нас
Кстати, та же история с Java 1.4 (и даже 1.4.x для конкретных x).
я сам только мельком смотрел, но все-равно заметно.
у них либо денег нет на закупку лицензий на сектор, либо мозгов, чтобы смело мигрировать и таки выучить новые фичи типа параметризованных типов
могли решить, что овчинка выделки не стоит. не получится жеж взять исходник, скомпилить и чтоб сразу заработало. уникоды, отличия в реализации VCL (видел, что Bitmap.Refresh стал другим - ранее не моргал, стал моргать и двойным буфером не лечится - надо менять), DecimalSeparator теперь по-другому, a{:char} in ['q','w','e'] тоже переписывать нужно...
наверно еще много чего изменилось - вот и не хотят тратить ресурсы.
а вот с Char in Set нелогично получилось, это да
арифметику указателей - приводить к инту? правда при переходе на 64 бит будут те же траблы. А есть интовый тип, размер которого совпадает с размером указателя?
Вроде как. Хотя Bydlocodero вслед за крестоебами полностью просрали концепцию fundamental and generic types, теперь у них целый зверинец интринсик типов
бат-файлами они собирают на своей выделенном для отдела машине в полуавтоматическом режиме, насколько я помню, у них есть собственная на дельфи писанная утилита, которая сливает с системы контроля версий сорцы требуемых версий, сама формирует bat, собирает солюшен и сдает в архив, рассылая письма
тестируются на своих машинах они конечно по F5 или что там в дельфи аналогичное
точнее они формируют bat и скармливают его своей утилите, во
проверь, что у тебя MAKEOPTS="-j" если многоядерный проц
Опции компиляции правильные, в три потока собирается. Сам c++ довольно долго компиляется, это факт (к примеру, 300 средних java-классов можно скомпилять примерно за 10 секунд). На какие жертвы только не пойдёшь ради быстрой работы приложений...
поэтому есть разные способы это самое время сократить
т.к. ты гентушник, то тебе явно только rebuild и приходится делать, это может напрягать, конечно
проанализируй, какие такие преимущества тебе даёт гента, что тебе приходится мириться с долгой пересборкой, не окажется ли любой другой x86_64 дистрибутив сопоставим по скорости, получаешь ли ты эти самые 5% прироста на своем достаточно стандартном процессоре, я даже не знаю что конкретно софт может использовать из камня core 2 (может какие то улучшения в плавающей точке?), если есть критичная разница в конкретных приложениях - может стоит из сорцов только эти приложения с USE флагами и собирать в бинарном дистрибутиве?
гента, как для меня, отличный дистрибутив чтобы поковыряться и разобраться в linux и отличный дистрибутив поддерживать N одинаковых машин в корректном состоянии, а ставить на ноут и жить с ним... там бинарных репозиториев еще не завели?
Arch - это треш. Перед каждым обновлением нужна молитва, какие-то детские баги с bluetooth.
Fedora - это вообще феерический пипец. По дефолту на ней даже gcc не стоит, компилятор java поставить из репозитория - проблема, глюков очень много.
Подумываю вот попробовать OpenSuse... Но вряд ли что-то сравнится с gentoo...
http://linux.wikia.com/wiki/Category:Gentoo_based_distro
мне кто то хвалил отечественный calculate, например
попробуй перейти на другой компилятор
гцц так вообще никогда не был самым быстрым, ни по скорости компиляции, ни по оптимизации конечного бинарника
http://clang.llvm.org/features.html#performance
они вроде как обещают хорошее ускорение компиляции с++
Для компиляции других приложений попробую clang, спасибо за наводку.
25 October 2010 Clang/LLVM able to compile a working Linux Kernel.[23]
но вообще стоит ожидать любого подвоха при компиляции ведра, да
кстати столман на днях приезжает в москву, погрызёт ногти и перед нами
SELinux, Posix ACLs, IPSec, eCrypt, anything that uses the crypto API - None of these will compile
Module loading is totally broken.
палка о двух концах
еще одна бесплатная конкуренция g++ - это отлично
но выпускается из стен корпорации бабла - грустно
gcc - это ж солянка, гнушники не хотят писать генератор нативного кода для каждого языка, а компилить всё языки в АСД и генерить бэкэндом машинный код. Универсальность всегда вредит производительности.
http://ru.wikipedia.org/wiki/Low_Level_Virtual_Machine
Так это хорошо.
В "JAWA" кот в рантайме компилируется. g: "git".
k-то зачем?
работает постоянно на 4700 GHz вместо 3400, без k такого не сделать, аве интелу
Прослоупоучил. Никогда не занимался разгоном, по мне - совершенное безумие.
труды окупились - компиляция по сравнению с предыдущим компом (6-летний пень-4 в обёртке от жлобов HP) ускорилась в 10-20 раз
это превзошло все мои ожидания
Интересно, насколько велика разница с неразогнанным процессором? В своё время я брал специально 2600, поскольку 2600к счёл пустой тратой денег.
в цене разница заметнее, т.к. кроме k надо хорошо доплатить за приличную мать (где интел тоже за чипсет просит $$), приличный тихий кулер, добавить на недохлый БП и память, а затем уже и хочется и рейд и тихий удобный корпус для этого всего, и клавиатуру с подсветочкой
но я не жалею - если жене не жалко на дребедень всякую, чего мне на себя жалеть для дела - на работе предложили взять новый системник с i5, я подумал и купил себе какой хотел
труды окупились оргазмом, когда самый здоровый проект на работе ребилдился вместо 20 минут полторы (это с опцией "собираем проекты последовательно"), когда можно линух поставить тут же на виртуалку, замапить на живую рабочую папку и компилять в 8 потоков ребилд за минуту/билд за мгновения, вместо ебли с копированием архива на выделенную одноядерную слабую машинку и туплением по 15-20 минут в интернете пока там соберётся
для дома (где задачи поиграть, интернеты и офис) - лучший выбор i5, конечно, игры всё равно в графику упираются
В том вся беда, что теоретически.
Я брал себе для дома, для игр, ну и виртуалки гонять. Собирать ничего не пробовал, у меня даже никакого компилятора не стоит. Потому и интересно, какой процент добавит этот разгон. На момент, когда я апгрейдился, 2600 от 2600к отличался на две тысячи (ЕМНИП); соответственно, я уже и без того потратился на остальное барахло, что решил просто пропить эти две тысячи. Так и вышло.
Если исключительно под разгон, для целей, где важна производительность, плюс, контора платит - свой вопрос снимаю.
процедурное программирование форевер
производительность? не, не слышал
работа с девайсом в синхронном режиме за 3 секунды, когда на С++ то же самое 100мс асинхронно - кого это ебёт
зато формочки клепаются быстро, а отсутствие контейнеров, шаблонов и т.д. из коробки - да это никому и не нужно, зато можно скачать какой нибудь очередной бессистемный компонент, коллективный разум поможет
но отдел выполняет свою работу, поэтому в чем то ты прав - у них всё хорошо
инструмент выполняет ту работу, для которой он предназначен
Схуяли дельфа сливает по производительности? Писать надо правильно.
> работа с девайсом в синхронном режиме за 3 секунды, когда на С++ то же самое 100мс асинхронно - кого это ебёт
Ну если в коде дельфи вставлена какая-нибудь херня типа sleep(3000), то может быть.
Очень много delphi-программистов, которые только и умеют наклепать формочки, назначить какие-то проперти и эвенты, в которых написать код типа как в этом посте.
про 3 секунды и 100 мс - они просто не умеют его готовить.
Хотя, что уж там, чему учили, то и умеют, если учились
комплирует шустро и днем
был багладовый make, потом msbuild приделали
Хех, я так собаку приучал не ссать на пол. М. б. перебрали юниоров?
юниоров-адептов-Малахова?
Странная нападка. То же самое можно сказать про любой из давно существующих языков.
Если бы не огромное количество кода написанного на Fortran/Cobol/C/C++/Delphi(нужное дописать), и который нужно поддерживать, то их бы давно не было.
Да: передаем в format параметром obj.ToString;
а что делать с локалью?
obj.ToString должен вывести что то одно?
или мне придется делать версию obj.ToString(somelocale) и каждый раз описывать что то?
Установи в конструкторе или в сетере.
а если у меня одновременно два потока, один с юзерской локалью, а другой - дефолтной?
дельфишный подход?
std::ostringstream defaultoss, useross;
useross.imbue(std::locale(""));
double somedouble = 100.500;
defaultoss << somedouble;
useross << somedouble;
бывает очень удобно, когда надо английский csv с ихними разделителями читать, перерабатывать и выводить как русский, чтобы в русском excel открылось
работа с локалями вообще очень удобна, задаешь для потока (а не для каждого объекта ёпта) и больше не беспокоишься
обычно сохраняют из экселя, так таблицы проще и портабельней передавать
строка таблицы выглядит как 100.500, 200.456, sometext
для русского экселя не выполняется, более того, если этот csv открыть в нем, то он всю строку засунет в первую ячейку
для русского экселя разделитель дробной части запятая, а разделитель ячеек - точка с запятой
доводилось писать утилиту (пакетная обработка данных для нейросетки), которая должна была принять на вход здоровый csv одного из двух форматов (русский/нерусский), серьезно перерабатывать его и выдавать csv под русский эксель
открывается файловый поток входного csv, избирается формат ячейки, формируются локали, в которых задается фасет numpunct с верным decimal_point, фасет, подавляющий пробел между группами тысяч (т.к. по науке зачем то в русской локали 100500 выводится как 100 500), затем одна локаль назначается на входной поток файла, а другая (под русский csv) на выходной
весь остальной движок не ебёт себе мозг что и как читать из файла
он просто делает >> из потока и << в поток
тур-де-франс, достаточно было правым меню воспользоваться
над входным файлом?
в экселе 65к ограничение на количество строк в таблице, это была еще одна причина не использовать ручной вариант
речь о том, что в С++ все эти хитрожопые операции (которые дельфишников никогда не касаются, потому что сложно) делаются очень небольшим числом строк
затем строки разбивать на ячейки, используя переданный сверху delimiter
затем в каждой ячейке пытаться распарсить значение, в котором известен разделитель дробной части
в С++ это всё делает поток за тебя
достаточно сначала один раз сказать как ему делать, задав свою локаль, а потом вызывать
myfile >> mydoublevariable;
Сам, волшебным образом. Просто благодаря своей крестовости, а вовсе не библиотеке, которая и в Дельфи наверняка есть, а если и нет, то дописывается.
:-P
но не суть
csv файл на 100500 строк (реально дохуя) в любом формате -> утилита, которая не только читает и пишет, но и перерабатывает (UI, настройка модели с построением графиков, обучение и тестирование нейросети) -> csv файл нужного формата для вывода аналитических результатов в excel
ты предлагаешь csv файл на 100500 строк -> еxcel, обрезка до 65к строк (уже олол), ручные действия по конвертации и сохранению -> утилита на переработку ....
выбран первый алгоритм действий, думаю понимаешь почему
и секретутки с макросами тут не причем
Но вообще ни разу не приходилось такими вещами заниматься.
ToString(obj) и ToString(obj, utf)
действительно, среда не для школьников
потоки имелись в виду stream, а не thread
Я вот утверждать не могу, мне пользоваться не доводилось просто.
> дельфишный format позволяет в качестве аргумента передать свой собственный класс, который сам знает как себя выводить?
Нет. Хотя хрен знает, может и можно.
Знаю, нельзя. Но я не хрен.
1. Специальный язык позволяет записать форматирование более компактно.
2. Весь вывод в одном месте, поэтому легче модифицируется.
3. Формат можно отделить от кода программы и хранить отдельно.
4. Поэтому легко локализируется.
Недостатки форматной строки:
1. Отсутствует статическая проверка.
2. Формат отделён от данных, поэтому проще внести ошибку при модификации.
3. Язык форматирования практически невозможно расширить.
4. До variadic templates в C++ плохо подходит для пользовательских типов.
Впрочем, с variadic templates и паровоз из << городить нет необходимости.
> 1. Отсутствует статическая проверка.
> 3. Язык форматирования практически невозможно расширить.
Есть языки, в которых это довольно легко реализуется. С помощью макросов. В частности, Nemerle.
К тому же, то, что названо "язык форматирования" в .NET легко задаётся свой.
Тут извечный спор Дильфины vs Крестоносцы, для них существует только два языка
и к чему это?