Własne funkcje operujące na łańcuchach znaków

0

Witam,
programuję ostatnio w C++ i potrzebuję funkcji operujących na łańcuchach znaków. Standardowe jednak mi nie odpowiadają, dlatego też postanowiłem napisać własne.
Oto dwa przykłady takich funkcji:

unsigned int StringLen(char* String)
{
unsigned int Char;
while (String[Char] != 0)
Char++;
return Char;
}

char* StringLeft( char* String, unsigned int Count)
{
char* NewString = (char*)GlobalAlloc(0x0040,Count+1);
for(int ch = 0; ch < Count; ch++ )
NewString[ch]=String[ch];
return NewString;
}

Jak się domyślacie, pierwsza zwraca długość tekstu, druga zaś jego lewą część określoną w ilości bajtów.

Funkcje wydają się działać poprawnie, jednak czy jest tak rzeczywiście? A może jest jakiś lepszy sposób, o którym nie wiem? Myślicie, że użycie GlobalAlloc w tym przypadku to dobry pomysł?
Chciałbym się czegoś nauczyć. Liczę na wiele ciekawych wskazówek. :)

0

http://clc-wiki.net/wiki/C_standard_library:string.h:strlen
To jest zły pomysł kiedy funkcja coś przydziela wewnątrz, zapoznaj się z strncpy

0

A czemu nie użyć po prostu operatora new??

1

Poza tym czemu nie możesz użyć std::string::length i zwracać stringa ? do rozmiaru ładnie używać size_t i ssize_t . przykład w C http://ideone.com/tbEsRd

0

Dzięki za wasze odpowiedzi. Już pisałem, nie lubię standardowych funkcji typu strncpy,std::string::length czy operatorów new i delete.
Myślicie jednak, że moje funkcje pisane w tym stylu co wyżej, mogą wywołać jakieś błędy w programie?

0

Już pisałem, nie lubię standardowych funkcji typu strncpy,std::length czy operatorów new i delete.

Zajmij się może czymś innym.

Oczywiście fajnie że próbujesz zaimplementować własne - bo to uczy algorytmów - ale motywacją powinna być chęć nauki, a nie irracjonalne nielubienie tego czy owego.

0

hah a dlaczego to nie lubisz standardowych funkcji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1