Array-Slicing in C ++

8

Ich versuche, die letzten 4 Zeichen von einem Zeichen-Array zu trennen, und ich habe versucht, die Methode, die Python ohne Erfolg verwendet;

%Vor%

Ich möchte, dass dieser Code zurückkehrt;

%Vor%

aber c / c ++ scheint nicht so einfach zu sein ...

Wo könnte ich eine einfache Alternative finden, die die letzten 4 Zeichen eines char-Arrays in ein anderes char-Array zurückgibt?

    
MetaDark 19.02.2011, 02:04
quelle

6 Antworten

12

Versuchen:

%Vor%

In C ++ können Sie das ersetzen durch:

%Vor%

Der Code verwendet eine spezielle Eigenschaft von C-Strings, die nur zum Abschneiden des Anfangs eines Strings verwendet wird.

    
Jeremiah Willcock 19.02.2011, 02:07
quelle
7

Zuerst entfernen wir die veraltete Konvertierung:

%Vor%

Arrays sind keine erstklassigen Werte in C ++ und sie unterstützen kein Slicing. So wie der obige Charon auf das erste Element im Array zeigt, können Sie auf jedes andere Element zeigen. Zeiger werden zusammen mit Zeichen verwendet, um C-artige Zeichenfolgen zu erstellen: die spitzen Zeichen, bis ein Null-Zeichen der Inhalt der Zeichenfolge ist. Da sich die gewünschten Zeichen am Ende der aktuellen (charone) Zeichenfolge befinden, können Sie auf das "f" zeigen:

%Vor%

Oder um beliebige String-Werte zu behandeln:

%Vor%

Oder weil Sie C ++ verwenden:

%Vor%

Beachten Sie insbesondere, dass std :: string Ihnen distinct -Werte gibt, so dass das Ändern eines Strings das andere nicht verändert, wie es bei Pointern der Fall ist.

    
Fred Nurk 19.02.2011 02:21
quelle
5

C ++ und Python sind sehr unterschiedlich. C ++ verfügt nicht über integrierte Python-ähnliche Zeichenfolgenfunktionen, aber seine Standard Template Library hat ein praktisches std::string Typ, mit dem Sie sich beschäftigen sollten.

    
Nikolai Fetissov 19.02.2011 02:25
quelle
3

Wenn Sie nur kurz auf die letzten vier Zeichen zugreifen möchten, dann etwas wie

%Vor%

ist in Ordnung (plus einige Fehlerprüfung).

Wenn Sie jedoch die Python-Funktionalität replizieren möchten, müssen Sie die letzten vier Zeichen kopieren . Verwenden Sie erneut strlen, um die Länge zu erhalten (oder speichern Sie sie vorher irgendwo), und verwenden Sie dann strcpy ( oder wahrscheinlich eine bessere stl-Funktion, die die gleiche Funktion hat). etwas wie ...

%Vor%

(Hinweis: Wenn Sie nicht kopieren, können Sie charone nicht freigeben, bis Sie chargewo nicht mehr verwenden. Wenn Sie nicht kopieren, ändert sich chartrowo auch, wenn Sie charone später ändern das ist in Ordnung, dann sicher, zeigen Sie einfach auf den Offset.)

    
jmilloy 19.02.2011 02:21
quelle
1

Das wird es tun:

%Vor%     
Chris Jester-Young 19.02.2011 02:07
quelle
0

Array-Slicing in C ++:

%Vor%

Dies ist nur eines der Beispiele, in denen das Slicen sinnvoll ist

Ich habe in Ссылка

eine kleine Bibliothek erstellt, die dies mit Kompilierungszeit-Überprüfungen durchführt     
Erik van Velzen 27.03.2013 05:26
quelle

Tags und Links