🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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++)
#123
Author: Andrzej Radecki
Date: Wed, 01 Sep 1999 11:35
19 lines
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++)
#124
Author: Andrzej Radecki
Date: Wed, 01 Sep 1999 19:47
53 lines
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++)
#125
Author: Dersu-R2-Uzala
Date: Thu, 02 Sep 1999 10:11
15 lines
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