Конференция "Прочее" » Перевод на С++
 
  • Буратиноо (19.01.09 12:49) [0]
    Помогите пожалуйста перевести этот код на С++.
    function Convd(x:integer):char;
    begin
    if x<10 then Convd:=chr(x+ord('0'))
    else Convd:=Chr(x-10+ord('A'));
    end;
    function 10toR(N,R:integer):string;
    var s:string;
    begin
    s:='';
    repeat
    s:=convd(N mod R)+S;
    N:=N div R
    until N=0;
    10toR:=s;
    end;

  • Сергей М. © (19.01.09 12:51) [1]
    Здесь же не изба-переводильня)
    Да и нет в C++ точного аналога дельфийских длинных строк
  • Riply © (19.01.09 13:26) [2]
    > [0] Буратиноо   (19.01.09 12:49)
    > Помогите пожалуйста перевести этот код на С++.

    А может лучше попробовать "свистнуть" у ReactOS`цев ?  :)

    NTSTATUS NTAPI RtlIntegerToChar  (  ULONG  value,      
     ULONG  base,      
     ULONG  length,      
     PCHAR  str      
    )      
    00518 {
    00519     CHAR buffer[33];
    00520     PCHAR pos;
    00521     CHAR digit;
    00522     ULONG len;
    00523
    00524     if (base == 0) {
    00525         base = 10;
    00526     }
    else if (base != 2 && base != 8 && base != 10 && base != 16) {
    00527         return STATUS_INVALID_PARAMETER;
    00528     }
    /* if */
    00529
    00530     pos = &buffer[32];
    00531     *pos = '\0';
    00532
    00533     do {
    00534         pos--;
    00535         digit = value % base;
    00536         value = value / base;
    00537         if (digit < 10) {
    00538             *pos = '0' + digit;
    00539         }
    else {
    00540             *pos = 'A' + digit - 10;
    00541         }
    /* if */
    00542     } while (value != 0L);
    00543
    00544     len = &buffer[32] - pos;
    00545     if (len > length) {
    00546         return STATUS_BUFFER_OVERFLOW;
    00547     }
    else if (str == NULL) {
    00548         return STATUS_ACCESS_VIOLATION;
    00549     }
    else if (len == length) {
    00550         memcpy(str, pos, len);
    00551     }
    else {
    00552         memcpy(str, pos, len + 1);
    00553     }
    /* if */
    00554     return STATUS_SUCCESS;
    00555 }  

  • icWasya © (19.01.09 14:32) [3]
    itoa +f1
  • ketmar © (19.01.09 14:55) [4]
    именно на C++? rtfm STL, rtfm boost. и не надо велосипедов делать.

    ---
    Do what thou wilt shall be the whole of the Law.
 
Конференция "Прочее" » Перевод на С++
Есть новые Нет новых   [134453   +34][b:0][p:0.003]