Wat betekent ‘\0’?

Ik begrijp niet wat de ‘\0’ op de twee verschillende plaatsen in de volgende code betekent:

string x = "hhhdef\n";
cout << x << endl;
x[3]='\0';
cout << x << endl;
cout<<"hhh\0defef\n"<<endl;

Resultaat:

hhhdef

hhhef

hhh

Kan iemand me wat tips geven?


Antwoord 1, autoriteit 100%

C++ std::strings zijn “getelde” tekenreeksen – d.w.z. hun lengte wordt opgeslagen als een geheel getal en ze kunnen elk teken bevatten. Als je het derde teken vervangt door een \0gebeurt er niets bijzonders – het wordt afgedrukt alsof het een ander teken is (in het bijzonder negeert je console het gewoon).

In de laatste regel drukt u in plaats daarvan een C-tekenreeks af, waarvan het einde wordt bepaald door de eerste \0die wordt gevonden. In zo’n geval gaat coutdoor met het afdrukken van tekens totdat het een \0vindt, wat in jouw geval na de derde his.


Antwoord 2, autoriteit 42%

C++ heeft twee typen tekenreeksen:

De ingebouwde C-stijl null-terminated strings die eigenlijk gewoon byte-arrays zijn en de C++ standaardbibliotheek std::stringklasse die nietnull beëindigd is.

Het afdrukken van een null-terminated string drukt alles af tot het eerste null-teken. Door een std::stringaf te drukken, wordt de hele string afgedrukt, ongeacht de null-tekens in het midden.


Antwoord 3, autoriteit 29%

\0is het NULL-teken, je kunt het vinden in je ASCII table, het heeft de waarde 0.

Het wordt gebruikt om het einde van snaren in C-stijl te bepalen.

C++ Class std::stringSlaat de grootte op als een geheel getal en is dus niet op.


Antwoord 4, Autoriteit 17%

U vertegenwoordigt hier op twee verschillende manieren, daarom verschilt het gedrag.

De tweede is gemakkelijker uit te leggen; Het is een C-stijl ruwe char array. In een C-Style-string geeft '\0'de null-terminator aan; Het wordt gebruikt om het einde van de tekenreeks te markeren. Dus eventuele functies die een proces / display-strings zullen stoppen zodra ze het raken (daarom is uw laatste string afgekapt).

Het eerste voorbeeld is het maken van een volledig gevormde C++ std::stringObject. Deze wijst geen speciale betekenis toe aan '\0'(ze hebben geen null-terminators).


Antwoord 5, Autoriteit 8%

De \0wordt behandeld als NULL-karakter. Het wordt gebruikt om het einde van de reeks in C.

te markeren

In C, String is een aanwijzer die naar array van tekens met \0aan het einde wijst. Dus volgt de geldige weergave van snaren in c.

char *c =”Hello”;    // it is actually Hello\0
char c[] = {‘Y’,’o’,’\0′};

De toepassingen van ‘\ 0’ liggen bij het bepalen van het einde van de reeks. For EG: het vinden van de lengte van de touw.


Antwoord 6

De \ 0 is eigenlijk een null-terminator die wordt gebruikt in C om het einde van het string-teken te beëindigen, in eenvoudige woorden zijn waarde is null in personages geeft de compiler-indicatie dat dit het einde van het tekenkarakter is,
Laat me je voorbeeld geven –
Terwijl we printf schrijven (“Hallo World”); / * Hallo World \ 0
Hier kunnen we duidelijk zien \ 0 werkt als nul, stoere printing de reeks in opmerkingen zou dezelfde output geven.

Other episodes