The code

69 отговора 2784 прегледа
в отговор на Mycлoн #21

Re: The code

коя ви е любимата цигания на Ц++? моята е, че като шляпаш темплейти трябва да внимаваш със > скобите, че да не ошашавиш компилатора, който си има отделно мнение за >> оператора

Пък моята любима цигания на C-пляс-пляс също е свързана с начина му на парсване... Ето я - например, искам да конструирам обект от някакъв мой си клас, обаче не с default конструктора му:

MyVectorClass obj(MyIterator(it1), MyIterator(it2));

...и си мисля че съм готов... обаче нанайци :)
Можете ли да се сетите какъв е резултата вместо това?

Редактирано от Pesho® на

Отговор
в отговор на Mycлoн #22

Re: The code

МФЦ и КОМ имплементациите на сериализация обаче са, меко казано, противни - ако знаеш други - моля те светни ме, че да си улесня живота в бъдещето

Ето тук:

[линк]

(трябва да се join-неш към yahoo-групата, of corpse)

P.S. Sorry ако развалям хубавия флейм

Отговор
в отговор на Mycлoн #23

Re: The code

Веднъж написах нещо такова:

int i = 3; // skip x:\
for(незнамсикво) и така нататък

обаче backslash-a и новото редче са line continuation sequence и for-а отиде та се не видя.

Бях чел предупреждение за подобен ефект, обаче не съм вярвал, че може да падна в капана.

Отговор
в отговор на Colombino #24

как не те досрамя...

Ауууу, какъв голям проблем били водещите нули. Абе пич, като не ставаш за програмист - поне си трай...

String s = Integer.toHexString(i);
"0000000".substring(s.length()) + s //leading zeros to 7 digits

Отговор
в отговор на ... #25

Яко :-)

Не съм свикнал да мисля в тия термини, ще го използвам.

Ето, засрамих се :-)


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на ... #26

P.S.

М/у другото ти като ставаш за програмист да бе сложил(а) 8 нули вместо 7.


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на ... #27

Re: как не те досрамя...

на ц става по-готино :)

char szNum[10];
char szResult[] = "0000000000";

_itoa(n, szNum, 16);
strcpy(szResult + 10 - strlen(szNum), szNum);

Отговор
в отговор на Resurrector #28

Re: как не те досрамя...

sprintf?

_itoa май е майкрософтска екстензия и я няма навсякъде

при мен например няма:

[null@muslon null]$ man _itoa
No manual entry for _itoa
[null@muslon null]$ man itoa
No manual entry for itoa

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на Colombino #29

Re: The code

Хмм ? Някъде скоро имаше топик как програмистите на високо ниво трябвало непременно да знаят какво става на ниско ниво като пишат код. Това тука е точен пример на обратното. Като имаш АПИ (Жаба, .НЕТ), ползвай го. .НЕТски код за твоя проблем изглежда така (8 водещи нули):


int intValue = 80; // примерно.
string hexString = intValue.ToString("X8");


В Жаба не може да няма нещо от сорта (форматтинг синтаксис), понеже това нещо идва от С още.

Отговор
в отговор на Guru #30

Стига глупости

Аз псувам Жаба, не .нет. При него всичко е наред. Няма такова API в Жаба.


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на Colombino #31

See package java.text

import java.text.*;

class test {

public static void main(String args[]) {
DecimalFormat df = new DecimalFormat("0000000000");
System.out.println(df.format(1));
System.out.println(df.format(11));
System.out.println(df.format(111));
}

}

Отговор
в отговор на JavaSoft #32

Re: See package java.text

така става най-лесно:

import IncredibleLanguage.UnbelievableModule.*;

DreamObject objTest = new DreamObject(MyMind);
String result = objTest .DoWhatIThink("Convert number to hex string with leading zeros", number);


Колко лесен би бил живота, а?

Редактирано от Resurrector на

Отговор
в отговор на JavaSoft #33

Какво се предполага да прави това?!?

Аз исках функция, дето да й дам int, тя да ми върне hex String с водещи нули (дължина 8). Вече дадоха доста елегантно решение на 2 реда ( макар вероятно доста неефективно ). Да има някъде клас HexadecimalFormat?


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на Colombino #34

Re: и защо да са проблем?

не си ме разбрал правилно - имах предвид ако НЕ ползваш принтф че е по-лесно с водещи нули. ето:

void conv(int v,int n,char *result){// v- вход, n-брой цифри,result изходен стринг
for(int i=0;i<n;i++){
result[n-1-i]=v%10+'0';
v/=10;
}
char[n]=0;
}

докато без водещи нули е доста по-трудно, пробвай.

Отговор
в отговор на Colombino #35

До колкото виждам оригиналния код прави същото.

И също доколкото виждам това, дето го искаш го няма реализирано все още. :-) Все пак става въпрос за локализация и числата се показват само в десетично или експоненциално изписване.

Явно на никой не му е трябвало, за да повдигне въпроса. Има Джава Комюнити Процес и там всеки си казва, какво иска и най-исканите неща влизат в следващата версия. :-)

А онова решение с 2-та реда освен, че е елегантно, е и бързо. Това форматиране не е особено бързо в Джава пък и то се използва за локализация. Предполагам, че вместо DecimalFormat можеш да ползваш TextFormat и разбира се да му подадеш низа от първия ред на колегата. Но това си е пак хак. Решението е да се добави съответния форматиращ символ с класа, който аз използвах. Ама дали ще стане и кога ще стане е една друга тема.

Отговор
в отговор на Mycлoн #36

ако това е вярно, от утре ставам жабар!

наистина ли сериализацията е толкова лесна? аз не съм писал много на джава, само преди 4 години малко пробвах, но аз принципно не мога да си представя концепция която сериализира ВСИЧКО. как се сериализират референсите/ указателите? ясно е какъв е проблема с тях - ако ги запишеш във файл, то нищо не суи направил, защото при следващото зареждане обектите сочени от тях имат други адреси. ако джавата можа да го прави автоматично, ще ми се издигне в очите. но дори да се оправя с референсите (нали така им викат на указателите там), пак не може сериализацията да става напълно автоматично.

Отговор
в отговор на zaphod #37

Re: ако това е вярно, от утре ставам жабар!

Е ти джаварите за идиоти ли ги мислиш бе пич?
То и на дот нет сериализаията става с няколко тага, даже е далеч по-гъвкава.

Отговор
в отговор на zaphod #38

Re: ъъъ, да не би тива чудо да добавя водещи нули?

Opredeleno ima mnogo svetnati hora mezdu tiah. Poznavam niakolko takiva koito evala im pravia, no masata sa takiva kato tozi deto e pisal code-a po-gore.
No pak kato se zamisli chovek che sa blizo 1miliard mai taka i triabva da e :)

Отговор
в отговор на zaphod #39

Re: ако това е вярно, от утре ставам жабар!

Нали си говорихме в оная другата тема за рефлексията - ако имаш рефлексия, имаш автоматична сериализация.

Ние правим така (на С++):

автоматично се сериализират само обекти, наследници на ISerializable (само че нашия се казва IPersistent);
като се опиташ да запишеш такъв указател, проверяваш дали този обект (който в момента на записването се идентифицира уникално по IPersistent* указателя си) вече е бил записван; ако не е бил записван, записваш типа му, целия обект и му даваш номерче, ако е бил записван, записваш само номерчето. Така нещата после могат да се прочетат обратно, и да се възстановят правилно указателите (като граф), макар че адресите им да са съвсем разбъркани.

Отговор
в отговор на dummy #40

Re: Защо?

Не виждам причини да мисля така. Хората сигурно идват от някое село в което наскоро са прекарали ток, но имат желание да направят живота си по добър и полагат усилия да се усъвършенстват. За тях сигурно и това да станат шофьори на такси не е било лесно. А тук (нация техническа уж) някои хора висят с години в разни вузове, излизат от там и хленчат че нищо не могат защото образователната система била лоша. И аз съм писал глупости докато съм бил млад и некадърен, но съм се старал и сега не съм толкова зле.

Отговор