Warum ändert sich die Größe dieses std :: string, wenn Zeichen geändert werden?

Samairtimer:

Ich habe ein Problem, bei dem die Größe der Zeichenfolge durch das Vorhandensein eines '\0'Zeichens beeinflusst wird. Ich habe überall in SO gesucht und konnte die Antwort immer noch nicht bekommen.

Hier ist der Ausschnitt.

int main()
{
  std::string a = "123123\0shai\0";
  std::cout << a.length();
}

http://ideone.com/W6Bhfl

Die Ausgabe in diesem Fall ist

6

Wobei als das gleiche Programm mit einer anderen Zeichenfolge Ziffern anstelle von Zeichen

int main()
{
  std::string a = "123123\0123\0";
  std::cout << a.length();
}

http://ideone.com/mtfS50

gibt eine Ausgabe von

8

Was genau passiert unter der Haube? Wie verändert die Anwesenheit eines '\0'Charakters das Verhalten?

Einige Programmierer Typ:

Die Sequenz, \012wenn sie in einem String- (oder Zeichen-) Literal verwendet wird, ist eine oktale Escape-Sequenz. Dies ist die Oktalzahl, 12die dem ASCII-Zeichen linefeed ( '\n') entspricht.

Das bedeutet, dass Ihre zweite Zeichenfolge tatsächlich gleich ist "123123\n3\0"(plus dem tatsächlichen Zeichenfolgenliteral-Terminator).

Es wäre sehr klar gewesen, wenn Sie versucht hätten, den Inhalt der Zeichenfolge zu drucken.

Oktalsequenzen sind ein bis drei Stellen lang, und der Compiler verwendet so viele Stellen wie möglich.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Warum werden Zeiger ungültig, wenn die Größe eines std::vector geändert wird?

Warum ändert sich die ForeColor dieses Labels nicht sichtbar, wenn sie in einer Schleife geändert wird?

Warum ändert sich die Größe des Videoplayers, wenn ich ein Posterbild hinzufüge?

Warum ändert sich der obere/untere Rand auf %, wenn die Bildschirmgröße horizontal geändert wird?

Wie kann die Schriftgröße dynamisch geändert werden, wenn sich scrollView contentOffset y ändert?

Warum werden vorhergesagte Polynomänderungen drastisch geändert, wenn sich nur die Auflösung des Vorhersagegitters ändert?

Wie kann verhindert werden, dass sich die UI-Elemente überschneiden, wenn die Größe des Browsers geändert wird?

Warum ändert sich das Ergebnis, nachdem ich die Größe des Arrays geändert habe?

Warum ändert sich die Größe dieses Python-Strings bei einer fehlgeschlagenen int-Konvertierung?

Warum wird die Größe meines Div nicht geändert, wenn die Größe des Browsers geändert wird?

Wie kann verhindert werden, dass sich Divs bewegen, wenn die Größe des Fensters (Browsers) geändert wird?

Warum ändert sich die ursprüngliche Liste, wenn die neue Liste geändert wird?

Warum ändert sich die Adresse des Zeigers nicht, wenn die Zeichenfolgenvariable in Rust geändert wird?

Die Größe meines Puffers ändert sich, wenn ich ein vorzeichenloses Zeichen in eine Zeichenfolge konvertiere

Warum ändert sich die Konstruktoreigenschaft eines Objekts, wenn der Prototyp des Konstruktors geändert wird?

Warum ändert sich die Reihenfolge der Daten in der Postgres-Datenbank, wenn eine geändert wird?

ValueError: Die Größe dieses Arrays kann nicht geändert werden. Es besitzt keine Daten

Das tkinter-Fenster ändert die Größe im gezoomten Zustand, wenn die Größe nicht geändert werden kann

Warum ändert sich die Border-Radius-Rate, wenn die CSS-Box die Größe ändert?

Das ursprüngliche Modell ändert sich, wenn die kopierten Daten in SAPUI5 geändert werden

Die Rahmenfarbe ändert sich nicht, wenn Themen in iOS 13 geändert werden

Warum verhält sich dieses Unzip-Shell-Skript anders, wenn die Umgebung Dev in Prod ändert?

Trigger useEffect, wenn sich die Bildschirmgröße geändert hat

Objekt bewegt sich, wenn die Fenstergröße geändert wird

Warum bewegt sich Rect from Canvas nach oben und unten, wenn die y-Koordinaten geändert werden?

Die Größe der SWT GridLayout-Spalte wird nicht geändert, wenn sich die Widgetgröße ändert

Warum springt die horizontale Balkengröße, wenn die Größe des Diagramms geändert wird?

Warum ändert sich die Größe meines <img>, wenn ich show () und hide () verwende?

Warum ändert sich die Größe meines Rands (links/rechts) nicht, wenn der Bildschirm kleiner ist?

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv