Null-terminated strings;

Null-terminated strings;
Deemer
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 20 lat
  • Postów:33
0

z helpa zrozumiałem tylko tyle że są to łancuchy kończące sie #0 :-) :-)
ale po kiego grzyba tak jest??
kazdy łańcuch znaków sie kończy #0??
i jak sie ewentualnie to wykorzystuje??? :| :|


.........
Marooned
Administrator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 3 godziny
  • Lokalizacja:Poznań
0

Stringi używane zarówno w C++ jak i w samym Windowsie są właśnie tego typu. Jeśli chcesz przesłać string jako parametr funkcji WinAPI, to musi on być właśnie tego typu.


KA
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 4 lata
  • Postów:137
0

Inaczej mówiąc jak tworzysz sobie napis w pamięci dowolnej długości to gdzieś musisz zapisywać gdzie on się kończy.

Znane są dwie popularne metody:
string - wrzucasz w pierszy znak jego długość (dlatego kiedyś było ograniczenie 256 znaków)
NTS - oznaczasz koniec zerem, i o tym mowa.

Kris


Kris
Dryobates
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 6 lat
0

Jeszcze takie uwagi. Z punktu widzenia więksości rozwiązań stringi są znacznie wydajniejsze. Pascalowe stringi mają ograniczenie do 255 znaków, co zaletą na pewno nie jest. AnsiString dostępne w Delphi (jak również w BCB, chociaż o ile pamiętam to jako klasa) są tak zbudowane, że teoretycznie możnaby je przekazywać spokojnie zamiast PChar (też są wskaźnikami). Nie jestem pewien jak jest zaimplementowana konwersja ich na PChar, ale help pisze o automatycznej konwersji, więc podejrzewam, że i tak znak końca (#0) jest umieszczany na końcu. Ale nie miałem czasu na testowanie tego.


Jest jeszcze jeden błąd :)
Unix is user friendly. It's just very particular about who it's friends are.
pq
  • Rejestracja:około 23 lata
  • Ostatnio:około 14 lat
0

podejrzewam, że i tak znak końca (#0) jest umieszczany na końcu.

Gdzies (nie pamietam gdzie) czytalem, ze tak jest. String ma doklejony na koncu #0 dla latwego rzutowania na Pchar.


"Ecie pecie - odparłem. - Wiadomo, że wszystkiemu winien komputer. Ten brzydal!" (Lem)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.