-
Буратиноо (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++ точного аналога дельфийских длинных строк -
> [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.