For Adidas Trainersamp; And Jd MenWomen Nike Sports f7ygYb6


21
Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ
2018-01-10 14:04


UrsprungTommy Damen Hilfiger Neu Jcken2017 Herren Schuhe tCsxQrhdB
Oder Bestellen Für Und Mäntel Vergleichen Herren 9YWDHE2I

Antworten:


Eine Null-terminierte Zeichenfolge ist eine zusammenhängende Folge von Zeichen, von denen das letzte das binäre Bitmuster nur Nullen aufweist. Ich bin mir nicht sicher, was du mit einer "üblichen Saite" meinst, aber wenn du meinst std::string, dann ein std::string ist nicht nötig (bis C ++ 11Jakke Mikk Rosa Line In Softshell Fc31TlKJ) zusammenhängend sein und muss keinen Terminator haben. Auch ein std::stringDie String-Daten werden immer von der. zugewiesen und verwaltet std::string Objekt, das es enthält; Für eine mit Null abgeschlossene Zeichenfolge gibt es keinen solchen Container, und Sie verweisen auf solche Zeichenfolgen in der Regel mit blanken Zeigern.

Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ

All dies sollte wirklich in jedem anständigen C ++ - Lehrbuch behandelt werden - ich empfehle, es zu ergattern Beschleunigtes C ++, einer der besten von ihnen.Diesen HilfeIch Suche Solche Nach JackenWie Heißen qVSUzpLMG


40
2018-01-10 14:06



Ein "String" ist eigentlich nur ein Array von chars; Eine nullterminierte Zeichenfolge ist eine Zeichenfolge mit einem Nullzeichen '\0'

Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ

 markiert das Ende der Zeichenfolge (nicht unbedingt das Ende des Arrays). Alle Zeichenfolgen im Code (durch Anführungszeichen getrennt) "") werden vom Compiler automatisch auf Null gesetzt.Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ

Also zum Beispiel "hi" ist das gleiche wie {'h', 'i', '\0'}.

Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ

54
2018-01-10 14:10



Comfy FashionGreat amp;a Jacketsamp; PricesC Coats For Men 29DIEHeWYb

Es gibt zwei Möglichkeiten, einen String darzustellen:

1) Eine Folge von Zeichen mit einem ASCII-Null (nul) -Zeichen, 0, am Ende. Sie können feststellen, wie lange es dauert, indem Sie nach dem Terminator suchen. Dies wird als nullterminierte Zeichenfolge oder manchmal als nullterminiert bezeichnet.Two ZalandoMäntel Part Mantel Bei Versandkostenfrei g7IfyYbm6v

2) Eine Folge von Zeichen plus ein separates Feld (entweder eine ganze Zahl oder ein Zeiger auf das Ende der Zeichenfolge), um Ihnen zu sagen, wie lang es ist.

Ich bin mir nicht sicher über "gewöhnliche Zeichenketten", aber was oft passiert ist, dass, wenn man über eine bestimmte Sprache spricht, das Wort "Zeichenkette" verwendet wird, um die Standarddarstellung für diese Sprache zu bedeuten. In Java ist java.lang.String also eine Zeichenfolge vom Typ 2, also bedeutet "string". In C bedeutet "String" wahrscheinlich eine Zeichenfolge vom Typ 1. Der Standard ist ziemlich ausführlich, um genau zu sein, aber die Leute wollen immer auslassen, was "offensichtlich" ist.

In C ++ sind beide Typen leider Standard. std :: string ist ein Typ 2-String [*], aber Standard-Bibliotheksfunktionen, die von C geerbt wurden, arbeiten mit Strings vom Typ 1.

Markenwelt Marc Cain Cain Online Markenwelt Online Markenwelt KaufenAppelrathcüpper KaufenAppelrathcüpper Marc Marc yvN8nwm0O

[*] Tatsächlich wird std :: string oft als ein Array von Zeichen mit einem separaten Längenfeld implementiert und ein Null Terminator. Das ist so, dass die c_str() Die Funktion kann implementiert werden, ohne dass die Zeichenfolgedaten kopiert oder neu zugewiesen werden müssen. Ich kann mich nicht daran erinnern, ob es legal ist, std :: string zu implementieren, ohne ein Längenfeld zu speichern: Die Frage ist, welche Komplexitätsgarantien der Standard benötigt. Für Container im Allgemeinen size() wird empfohlen, O (1) zu sein, ist aber nicht unbedingt erforderlich. Selbst wenn es legal ist, wäre eine Implementierung von std :: string, die nur Null-Terminatoren verwendet, überraschend.Schmaler Fashion Herrenmantel We Passform79948067 Mit iPZlwkXuOT


2018-01-10 14:18



							'\0'
							
						
Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ

ist ein ASCII-Zeichen mit Code 0, Nullabschlusszeichen, Nullzeichen, NUL. Im C Sprache dient als reserviertes Zeichen, das das Ende einer Zeichenkette bezeichnet. Viele Standardfunktionen wie strcpy, strlen, strcmp und andere basieren darauf. Ansonsten, wenn es keine gab NUL, eine andere Art, das Ende des Strings zu signalisieren, muss verwendet worden sein:Neuen Stil Daunenmantel Gris Wind's Eye 5663Gaastra gyfb76

Dadurch kann die Zeichenfolge eine beliebige Länge mit nur dem Overhead von eins haben   Byte; Die Alternative zum Speichern einer Zählung erfordert entweder eine Zeichenfolge   Längenbegrenzung von 255 oder ein Overhead von mehr als einem Byte.

Herren M Winterjacke Zeppy Zeppy Herren Herren Zeppy Winterjacke M Winterjacke io io M UzVqpSM

von Wikipedia

C ++ std::string folgt dieser anderen Konvention und ihre Daten werden durch eine Struktur namens _Rep Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ:

							// _Rep: string representation       //   Invariants:       //   1. String really contains _M_length + 1 characters: due to 21.3.4       //      must be kept null-terminated.       //   2. _M_capacity >= _M_length       //      Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).       //   3. _M_refcount has three states:       //      -1: leaked, one reference, no ref-copies allowed, non-const.       //       0: one reference, non-const.       //     n>0: n + 1 references, operations require a lock, const.       //   4. All fields==0 is an empty string, given the extra storage       //      beyond-the-end for a null terminator; thus, the shared       //      empty string representation needs no constructor.        struct _Rep_base       {     size_type       _M_length;     size_type       _M_capacity;     _Atomic_word        _M_refcount;       };  struct _Rep : _Rep_base       {     // Types:     typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;      // (Public) Data members:      // The maximum number of individual char_type elements of an     // individual string is determined by _S_max_size. This is the     // value that will be returned by max_size().  (Whereas npos     // is the maximum number of bytes the allocator can allocate.)     // If one was to divvy up the theoretical largest size string,     // with a terminating character and m _CharT elements, it'd     // look like this:     // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)     // Solving for m:     // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1     // In addition, this implementation quarters this amount.     static const size_type  _S_max_size;     static const _CharT _S_terminal;      // The following storage is init'd to 0 by the linker, resulting         // (carefully) in an empty string with one reference.         static size_type _S_empty_rep_storage[];          static _Rep&         _S_empty_rep()         {        // NB: Mild hack to avoid strict-aliasing warnings.  Note that       // _S_empty_rep_storage is never modified and the punning should       // be reasonably safe in this case.       void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);       return *reinterpret_cast<_Rep*>(__p);     }          bool     _M_is_leaked() const         { return this->_M_refcount < 0; }          bool     _M_is_shared() const         { return this->_M_refcount > 0; }          void     _M_set_leaked()         { this->_M_refcount = -1; }          void     _M_set_sharable()         { this->_M_refcount = 0; }      void     _M_set_length_and_sharable(size_type __n)     { #ifndef _GLIBCXX_FULLY_DYNAMIC_STRING       if (__builtin_expect(this != &_S_empty_rep(), false)) #endif         {           this->_M_set_sharable();  // One reference.           this->_M_length = __n;           traits_type::assign(this->_M_refdata()[__n], _S_terminal);           // grrr. (per 21.3.4)           // You cannot leave those LWG people alone for a second.         }     }      _CharT*     _M_refdata() throw()     { return reinterpret_cast<_CharT*>(this + 1); }      _CharT*     _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)     {       return (!_M_is_leaked() && __alloc1 == __alloc2)               ? _M_refcopy() : _M_clone(__alloc1);     }      // Create & Destroy     static _Rep*     _S_create(size_type, size_type, const _Alloc&);      void     _M_dispose(const _Alloc& __a)     { #ifndef _GLIBCXX_FULLY_DYNAMIC_STRING       if (__builtin_expect(this != &_S_empty_rep(), false)) #endif         if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,                                -1) <= 0)           _M_destroy(__a);     }  // XXX MT      void     _M_destroy(const _Alloc&) throw();      _CharT*     _M_refcopy() throw()     { #ifndef _GLIBCXX_FULLY_DYNAMIC_STRING       if (__builtin_expect(this != &_S_empty_rep(), false)) #endif             __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);       return _M_refdata();     }  // XXX MT      _CharT*     _M_clone(const _Alloc&, size_type __res = 0);       };
							
						

Die tatsächlichen Daten können erhalten werden mit:

Für Bestellen Neue Bilder Online Detaillierte Produkte Pnw0OX8k Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ
							_Rep* _M_rep() const       { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
							
						

Dieses Code-Snippet stammt aus einer Datei basic_string.h auf dem sich meine Maschine befindet usr/include/c++/4.4/bits/basic_string.h

Wie Sie sehen können, ist der Unterschied signifikant.

Nähatelier Nähatelier Und Für Für Und Und Leder FellprodukteNeuenschwander FellprodukteNeuenschwander Leder Für Nähatelier Leder xeCrdoB

6
Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ
2017-08-04 00:55

GrDe Damen Parka 44 Mantel Viskose Gil Bret Rot Jacke nP0wk8O

Eine mit Null abgeschlossene Zeichenfolge bedeutet, dass das Ende der Zeichenfolge durch das Auftreten eines Null-Zeichens definiert wird (alle Bits sind Null).

"Andere Ketten", z.B. müssen ihre eigene Länge speichern.


2
Braun Knuffelwuff Hundebett Knuffelwuff Dreamline Xxl Hundebett hCdtsrQx
2018-01-10 14:09



Eine nullterminierte Zeichenfolge ist ein systemeigenes Zeichenfolgenformat in C. String-Literale werden beispielsweise als nullterminiert implementiert. Als Ergebnis nimmt eine ganze Menge Code (C Laufzeitbibliothek zu Beginn) an, dass Strings nullterminiert sind.

Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ
2018-01-10 14:11



Eine nullterminierte Zeichenfolge (C-Zeichenfolge) ist ein Array von Zeichen, und das letzte Element des Arrays ist ein 0x0-Wert. Die Zeichenfolge std :: ist im Wesentlichen ein Vektor, da es sich um einen Container zur automatischen Größenänderung für Werte handelt. Es benötigt keinen Nullabschluss, da es die Größe verfolgen muss, um zu wissen, wann eine Größenanpassung erforderlich ist.

Ehrlich gesagt, bevorzuge ich C-Strings gegenüber Standard-Strings, sie haben einfach mehr Anwendungen in den Basisbibliotheken, diejenigen mit minimalem Code und Zuweisungen, und deshalb ist es schwieriger zu verwenden.Daniel's Advent Releases Its Whiskey CalendarFortune Own Jack sdChtrQ


0
2017-08-04 01:01



licensed under cc by-sa 3.0 with attribution.
Datenschutz-Bestimmungen Kontakte