Húr - ez

A memóriában tárolt

Néhány programozási nyelvek korlátozhatja a maximális hossza a vonal, de a legtöbb ilyen korlátozások nem nyelv. Unicode használata esetén minden karakterlánc típusú megkövetelheti két vagy akár négy bájt a bemutatót.

A fő probléma a gép ábrázolása egy string típusú:

  • vonalak lehetnek kellően jelentős méretű (akár több tíz megabájt);
  • időben változó méretű - vannak nehézségek hozzáadása és eltávolítása a szimbólumok.

Az ábrázolás sor, két alapvetően különböző megközelítéseket számítógép memóriájában.

Bemutatása egy sor karakter

Ebben a megközelítésben a vonal egy sor karakter; ahol a méret a tömb van tárolva egy külön (szolgáltatás) területen. Pascal nyelvű cím. ahol ezt a módszert először végre, ezt a módszert nevezik Pascal szálakat.

Kissé optimalizált kiviteli alakja ennek a módszernek, t. N. format c-cím u (az angol. karakter igazított cím + előjel nélküli szám), használt Forte. Ellentétben Pascal húrok, itt a tömb mérete nem tárolja együtt a húr adatokat és része egy string mutatót.

előnyök

  • programot bármikor „tudja”, körülbelül akkora, mint a húr, és a művelet karakterek végére bekerül a másolás és a fogadó sor mérete végzik elég gyorsan;
  • string tartalmaz adatot;
  • lehetőleg a program szintjén ellenőrizni a kimeneti a határvonal annak feldolgozása;
  • gyorsan végezhet műveleteket az űrlap „vevő az N-edik karaktert a sor végére.”

hiányosságokat

  • problémák a tárolása és kezelése a karakter bármilyen hosszúságú;
  • növeli a tárolás költségét húrok - az értéke „vonal hossza” is zajlik abban az esetben nagyszámú sorban a kis méret jelentősen növelheti a követelményeknek az algoritmus a memóriában;
  • korlátozza a maximális méret a húr. A modern programozási nyelvek, ez a korlátozás inkább elméleti, hiszen ez általában akkora, mint egy húr van tárolva 32 bites mező, amely lehetővé teszi a maximális méret a string 4294967295 bájt (4 gigabájt).

„Végső byte” módszerrel

A második módszer az, hogy az „végső byte”. Az egyik lehetséges ábécé szimbólum értékeket (általában egy karaktert 0-ás kód) kerül kiválasztásra az a sor végére jellemző, és a húr van tárolva, bájtok sorozata az elejétől a végéig. Van egy olyan rendszer, amelyben jeleként a sor végére nem szimbólum 0 használnak, és a byte 0xFF (255) vagy a kód szimbólum „$”.

A módszer három név - ASCIIZ (karakterek ASCII nulla megszűnik bájt), a C-húrok (a legelterjedtebb módszer pontosan C) és C módszer string kezelő.

előnyök

  • nincs további általános a vonalon (kivéve a végső bájt);
  • benyújtásának lehetőségét sor, anélkül, hogy külön adattípus;
  • nincs korlátozás a maximális mérete string;
  • gazdaságos memória használatára
  • történő kinyerésének egyszerűsége utótag karakterlánc;
  • lehetséges, hogy egy változó ábécé karakter méret (például UTF-8).

hiányosságokat

  • Műveletek előállítására hosszú végrehajtási hosszát és összefűzés;
  • az ellenőrzés hiányából az túlmutat a vonal, abban az esetben a kár, hogy a hátsó byte potenciális károsodásának nagy területen memória, ami oda vezethet, hogy kiszámíthatatlan következményekkel - adatvesztés, programok, és még az összeomlás az egész rendszer;
  • Az képtelenség, hogy használja a végső karakter bájt a vonal elemet.

Mindkét módszerrel

A nyelvek, mint például Oberon. vonal kerül egy tömb egy specifikus hosszúságú karakterekből végével jelöli egy null karakter. Alapértelmezésben az egész tömb tele van null karakter. Ez a módszer lehetővé teszi, hogy összekapcsolják számos előnye mindkét megközelítés, és hogy elkerüljék a legtöbb a hiányosságokat.

Végrehajtása programozási nyelvek

  • Az első programozási nyelvek nem volt string típusú; programozó maga is építeni funkcióval rendelkezik húrok egyik vagy másik típus.
  • A C használt C string kezelő teljes kézi vezérlés a programozó.
  • A szabványos Pascal sztring jelenik meg, mint egy sor 256 bájt; első byte tárolt vonal hossza, a test tartják a többit. Így a vonal hossza nem haladhatja meg a 255 szimbólumokat. A Borland Pascal 7.0 is megjelent vonal „a la C” - nyilván annak a ténynek köszönhető, hogy a számos támogatott platform tartalmazza a Windows.
  • Az Object Pascal és a vonal STL a „fekete doboz”, amelyben az allokációs / kiadás a memória automatikusan - anélkül, hogy a programozó. Amikor létrehoz egy sor memóriát automatikusan; amint a vonal nem lesz referencia memória vissza a rendszerbe. A módszer előnye, hogy a programozó nem gondol a munka vonalak. Másrészt, a programozó nem rendelkezik elegendő felett a programok működésének kritikus területeken a sebesség; Szintén nehéz rájött távvezetékek, mint a paraméter a DLL. Object Pascal automatikusan biztosítja, hogy egy szimbólum a kódot a végén a szöveg 0. Ezért, ha a funkció megkívánja a C string kezelő bemenet. átalakítani csak meg kell írni PAnsiChar (strokovaya_peremennaya) vagy PWideChar (strokovaya_peremennaya) (Pascal), .c_str () változó (Builder / STL).
  • C # és más nyelveken a szemétgyűjtő húr megváltoztathatatlan; Ha módosítani kell a húr, egy másik objektumot hozunk létre. Ez a módszer lassú és rengeteg átmeneti emlékezetkiesés, de jól illeszkedik a koncepció szemétgyűjtő. A módszer előnye, hogy a feladat zajlik, gyorsan és a párhuzamos vonalak. Szintén van némi kézi vezérlését az építési tételek (például egy Java keresztül StringBuffer osztályban.) - ez csökkenti a csapadékot és a memória felszabadulását, és ennek megfelelően növeli a sebességet.
Egyszerű String műveletek
  • megszerzése egy karaktert helyzetben (index) - a legtöbb nyelven egy triviális művelet;
  • konkatenáció (kapcsolat) vonalak.
derivatív ügyletek
  • Első alsztringjeként indexek elején és végén;
  • ellenőrzése előfordulása egy húr a másikra (keresni al-string);
  • ellenőrzése véletlen vonalak (beleértve a kis- és nagybetűk nem vagy);
  • megszerzése vonal hosszát;
  • Csere részkarakterláncként.
Műveletek értelmezése húrok listaként
  • konvolúció;
  • megjeleníteni egy listát a másikra;
  • szűrési feltételek listája.
Bonyolultabb műveletek
  • A minimális nem nadstroki tartalmazó összes ilyen vonalak;
  • keresni két tömb sor egybeesik szekvenciákat (a probléma a plágium).
Lehetséges problémák húrok természetes nyelven
  • összehasonlítjuk a közelsége az említett vonalak által egy előre meghatározott kritériumnak;
  • meghatározása nyelv és szöveges kódolás alapján valószínűsége szimbólumok és szótagokat.

Ábrázolása egy karaktersorozatot

Egészen a közelmúltig, az egyik karakter mindig kódolva egy byte (8 bit bináris és a kódolást alkalmazzák 7 bit per karakter), amely lehetővé teszi, hogy képviselje 256 (128 hét bites kódolás) lehetséges értékeit. Azonban a high-grade képviselete a ábécék több nyelv szimbólum (többnyelvű dokumentumok, nyomtatás karakter - .. Többféle idézetek csipetnyi többféle terek és szövegek írásra hieroglifák nyelvek -. Kínai japán és koreai) 256 karakter nem elég. Számos módszer létezik, hogy megoldja ezt a problémát:

Lásd, amit a „String” más szótárak:

Adat típus - (kifejezés előfordul ilyen jellegű adatok) alapkoncepciója az elmélet programozás. Az adatok típusa határozza meg egy értékrend, egy sor művelet, amelyet alkalmazni lehet, hogy ezeket az értékeket, és talán egy módja a tárolás érték és ... ... Wikipedia

Primitív típus - Primitive (beépített, alap) típusú adatok típusát, amelyet a programozási nyelv épült alapegységekkel nyelvet. Attól függően, hogy a nyelv és annak végrehajtására, egy sor ilyen típusú nagymértékben változhat. Ez határozza meg, ... ... Wikipedia

Logikai - Ahogy Bool technikai okok átirányítja itt. Mintegy Bool itt olvasható: stdbool.h. Logikus, logikai (Eng. Logikai vagy logikai adattípus) adattípus egy primitív adattípusok számítástechnika, amely akár két lehetséges ... Wikipedia

Egész szám (adattípus) - Egy egész egész adattípus (angol egy egész szám.) A számítástechnikában az egyik legegyszerűbb és leggyakoribb adattípusok programozási nyelvek. Arra használják, hogy egész számokat. A számsor az ilyen típusú ... ... Wikipedia

A legmagasabb típus - (top típus) típusú elmélet, gyakran nevezik a felső vagy a „fix” szimbólum (⊤), univerzális típus, vagyis olyan típusú, amely tartalmaz minden lehetséges tárgyat a megfelelő típusú rendszer. A legmagasabb típusú nevezik ... ... Wikipedia

Algebrai adattípus - az elmélet programozási bármilyen típusú, amelyek értéke az értékek néhány más típusú „csomagolt” a tervezők algebrai típusát. Más szóval, az algebrai adattípus egy sor típus konstruktőrök, amelyek mindegyike ... ... Wikipedia

A szett (adattípus) - Ez a kifejezés, vannak más célra, lásd a set (érték) .. A szett típusa és az adatstruktúra a számítástechnikában, egy megvalósítása egy matematikai objektum készletet. Adathalmaz típus képes tárolni korlátozott számú értékek ... ... Wikipedia

Logikai - A logikai (Boolean) adattípus egy primitív adattípus számítógép, amely lehet, hogy két lehetséges érték, néha az igazság és a hazugság. Jelen van a legtöbb programozási nyelvek, mint önálló entitás vagy ... Wikipedia