Thread View: pl.comp.os.linux.programowanie
3 messages
3 total messages
Started by Andrzej Radecki
Wed, 01 Sep 1999 11:35
Operacje na stringach w C (C++)
Author: Andrzej Radecki
Date: Wed, 01 Sep 1999 11:35
Date: Wed, 01 Sep 1999 11:35
19 lines
1390 bytes
1390 bytes
Witam! Czy są inne (bardziej zaawansowane) funkcje operujące na stringach w C niż te opisane w "man string"? Chodzi mi głównie o operacje wstawiania i wycinania części łańcucha (takie insert/delete od.. do..) ale nie tylko. Do tej pory najbardziej użyteczną funkcją jest dla mnie "memcpy" (sic!) i zwykłe "for". Nawet miałem zamiar napisać takie funkcje w oparciu o w/w. Piszę program w C bo potrzebna mi jest duża prędkość działania a łańcuchy mają stałą maksymalną długość więc tablicowe stringi z C świetnie się tu sprawdzają. Aha.. słyszałem też o klasach w C++ dla stringów ale jakoś nie mogę się doszukać ich opisu, czy może ktoś je nieco przybliżyć ten temat? Pozdrawiam, -- ( /6/ Andrzej Radecki ==== \ radecki@wpk.p.lodz.pl / | http://www.wpk.p.lodz.pl/~radecki
Re: Operacje na stringach w C (C++)
Author: Andrzej Radecki
Date: Wed, 01 Sep 1999 19:47
Date: Wed, 01 Sep 1999 19:47
53 lines
2397 bytes
2397 bytes
Andrzej Radecki <radecki@wpk.p.lodz.pl> pisze:
>Czy są inne (bardziej zaawansowane) funkcje operujące na stringach w C niż
>te opisane w "man string"? Chodzi mi głównie o operacje wstawiania
>i wycinania części łańcucha (takie insert/delete od.. do..) ale nie tylko.
Ok.. ponieważ nie chciało mi się czekać na Waszą odpowiedź 'na prędce'
napisałem dwie funkcje, które robią to co opisałem wyżej. Dołączam je do
postu - może komuś się przydadzą.
Pytania, które zadałem poprzednio oczywiście nadal są aktualne.
/*
* Wstawia łańcuch 'source' do 'dest' na pozycji 'pos'
* nie nadpisując danych. W przypadku gdy 'pos' jest
* większe niż długość 'dest' łańcuch ten jest przedłużany
* i wypełniany spacjami. Funkcja nie alokuje żadnych danych.
* W szczególności należy się upewnić, że dla 'dest' jest
* zaalokowane wystarczająco dużo miejsca.
*/
char *insstr(char *dest, const char *source, int pos)
{
int i;
int dlength=strlen(dest);
int slength=strlen(source);
if (pos > dlength) { // wstawianie za końcem stringa
for (i=dlength; i < pos + slength; i++)
*(dest+i) = ' ';
*(dest+(++i)) = '\0';
} else memmove(dest+pos+slength, dest+pos, dlength-pos+1);
memcpy(dest+pos,source,slength);
return dest;
}
/*
* Usuwa (nie zamazuje!) z łańcucha 'dest' 'count' znaków
* zaczynając od znaku na pozycji 'pos'.
*/
char *delstr(char *dest, int pos, int count)
{
int dlength=strlen(dest);
if (dlength < pos + count) // ucięcie końcówki
*(dest+pos)='\0';
else memmove(dest+pos, dest+pos+count, dlength-count+1);
return dest;
}
Pozdrawiam,
--
( /6/ Andrzej Radecki
==== \ radecki@wpk.p.lodz.pl
/ | http://www.wpk.p.lodz.pl/~radecki
Odp: Operacje na stringach w C (C++)
Author: Dersu-R2-Uzala
Date: Thu, 02 Sep 1999 10:11
Date: Thu, 02 Sep 1999 10:11
15 lines
1569 bytes
1569 bytes
Użytkownik Andrzej Radecki <radecki@wpk.p.lodz.pl> w wiadomości do grup dyskusyjnych napisał:slrn7sq3rk.9l.radecki@radek.localdomain... > Witam! > > Czy są inne (bardziej zaawansowane) funkcje operujące na stringach w C niż > te opisane w "man string"? Chodzi mi głównie o operacje wstawiania Poszukj gdzies na sieci opisu do standardu C++ (byl kiedys na L+ w formacie PDF). Jest tam prawdopodobnie wszystko czego potrzebujesz. Mozesz szukac po hasle "STL" - standard templatee library, bo to jest jednym z wazniejszych elementow najnowszego standardu. Mowglie
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads