Array slicing in c++
Ich versuche, schneiden Sie die letzten 4 Zeichen aus einem Zeichen-array und ich habe versucht, die Methode, die python verwendet, ohne Erfolg;
char *charone = (char*)("I need the last four")
char *chartwo = charone[-4:]
cout << chartwo << endl;
Ich würde mir wünschen, diesen code zurück;
four
aber c/c++ nicht so einfach...
Wo finde ich eine einfache alternative, die Rückkehr der letzten 4 chars von einem char-array in ein anderes char-array?
- Warum tun Sie Sie werfen? Ist es, weil Sie gcc verwenden, und es gibt eine Warnung?
- Ja XP, und wenn ich das nicht bekomme ich einen Segmentation Fault in der Regel.
- Rechts, in C++ string-Literale sind const char, also sollte man eine const char* - zu-Punkt an. Das ist wahrscheinlich das, was der compiler sagt Ihnen zu.
- Was bedeutet
[-4:]
meine, welche Sprache ist es? - es ist in Python slicing, glaube ich. Es bedeutet, dass man vier Zeichen nach hinten in das array und die Scheibe bis zum Ende.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen:
In C++ kann man ersetzen mit:
Der code verwendet eine spezielle Eigenschaft von C-strings, das funktioniert nur für abhacken den Beginn einer Zeichenkette.
strlen
auf einen Konstanten string, aber ich weiß nicht, ob jeder tun.Zuerst entfernen Sie die veraltete Konvertierung:
Arrays sind nicht die erste-Klasse-Werte in C++, und Sie nicht unterstützen aufschneiden. Aber, so wie die oben charone Punkte auf das erste Element in dem array, können Sie zeigen Sie auf jedes andere Element. Zeiger verwendet werden, mit chars zu machen, die C-style-strings: die Spitzen-char, bis ein null-Zeichen wird der Inhalt der Zeichenfolge. Denn die Zeichen, die Sie wollen, sind am Ende der aktuellen (charone) string, Sie können zeigen Sie am "f":
Oder zu behandeln beliebige string-Werte:
Oder, weil man mit C++:
Beachten Sie insbesondere, dass std::string gibt Sie verschiedene Werte, so ändern Sie entweder string nicht ändern, das andere passiert, wie mit Zeigern.
C++ und Python sind sehr unterschiedlich. C++ keinen eingebauten Python-like-string-Einrichtungen, aber seine Standard Template Library hat eine handliche
std::string
geben, die Sie in Aussehen sollte.Wenn Sie schauen, um nur kurz Zugriff auf die letzten vier Zeichen, dann so etwas wie
wird gut (plus einige Fehler überprüfen).
Aber wenn Sie möchten, replizieren Sie die python-Funktionalität, müssen Sie kopieren die letzten vier Zeichen. Verwenden Sie erneut, strlen die Länge (oder speichern Sie es irgendwo vorher), und verwenden Sie dann strcpy (oder wahrscheinlich besser, stl-Funktion, die hat die gleiche Funktion). so etwas wie...
(Hinweis: Wenn Sie nicht kopieren, dann kannst du nicht frei charone, bis Sie fertig sind mit chartwo. Auch, Wenn Sie nicht kopieren, dann ändern Sie charone später, chartwo auch ändern. Wenn das in Ordnung ist, dann sicher, nur das offset.)
Diese wird es tun:
array slicing in c++:
Dies ist nur eine der emamples wo slicing ist nützlich
Habe ich eine kleine Bibliothek, der tut dies mit compile-Zeit-Grenzen Kontrollen an https://github.com/Erikvv/array-slicing-cpp