Tableau de découpage en c++
Je suis en train de découper les 4 derniers caractères hors d'un tableau de caractères et j'ai essayé la méthode que python utilise sans succès;
char *charone = (char*)("I need the last four")
char *chartwo = charone[-4:]
cout << chartwo << endl;
Je veux que ce code de retour;
four
mais c/c++ ne semble pas être facile...
Où pourrais-je trouver une alternative simple qui va renvoyer les 4 derniers caractères de l'un char tableau dans un autre tableau de char?
Pourquoi avez-vous choisi? Est-ce parce que vous utilisez gcc et il donne un avertissement?
Ouais XP, et quand je n'en ai pas, j'obtiens une erreur de Segmentation d'habitude.
Droit, en C++, les littéraux de chaîne sont const char, donc vous devez utiliser un const char* point à elle. C'est probablement ce que le compilateur vous dit trop.
Ce n'
c'est Python découpage, je crois. Cela signifie aller à quatre caractères en arrière dans le tableau et la tranche à la fin.
Ouais XP, et quand je n'en ai pas, j'obtiens une erreur de Segmentation d'habitude.
Droit, en C++, les littéraux de chaîne sont const char, donc vous devez utiliser un const char* point à elle. C'est probablement ce que le compilateur vous dit trop.
Ce n'
[-4:]
veux dire, de quelle langue s'agit-il?c'est Python découpage, je crois. Cela signifie aller à quatre caractères en arrière dans le tableau et la tranche à la fin.
OriginalL'auteur MetaDark | 2011-02-19
Vous devez vous connecter pour publier un commentaire.
Essayer:
En C++, vous pouvez la remplacer avec:
Le code utilise une propriété particulière de chaînes C qui ne fonctionne que pour les hacher éteint le début d'une chaîne.
gcc n', j'ai juste couru un test. Les deux versions de générer le même code assembleur sous -O2.
Comme il est courant, c'est juste un exemple. L'OP a déclaré que le code réel fonctionne avec des chaînes dynamiques, auquel cas jmilloy point est valide. C'est généralement une bonne idée de penser au cas général et ne pas être trop à la langue lawyerly sur un comportement indéfini dans des cas spécifiques.
Mieux encore: faire le cas de l'exemple correspondre le cas réel. L'OP n'a même pas il est évident qu'il n'a pas de correspondance dans cet aspect, sauf sur l' (en cours) plus bas voté réponse.
Vous avez été de répondre pour moi et je répond à vous, et...? Je ne vois pas ce que vous avez souligné. Je suis désolé, j'ai raté l'essentiel commentaire enterré sur cette autre réponse.
OriginalL'auteur Jeremiah Willcock
Tout d'abord, nous allons supprimer le obsolète conversion:
Tableaux ne sont pas des valeurs de première classe en C++, et ils ne supportent pas de le trancher. Cependant, tout comme le ci-dessus charone est pointe vers le premier élément d'un tableau, vous pouvez pointer vers n'importe quel autre élément. Les pointeurs sont utilisés avec les caractères de faire C-style de cordes: de la pointe-char jusqu'à une valeur null char est le contenu de la chaîne. Parce que les personnages sont à la fin de l'actuelle (charone est) chaîne de caractères, vous pouvez pointer sur le "f":
Ou, pour gérer la chaîne arbitraire de valeurs:
Ou, parce que vous êtes à l'aide de C++:
En particulier, notez que std::string vous donne distinctes valeurs, de sorte que la modification soit de la chaîne de ne pas modifier les autres, comme il arrive avec les pointeurs.
OriginalL'auteur Fred Nurk
C++ et Python sont très différents. C++ ne prend pas en Python-comme la chaîne des installations, mais son Bibliothèque De Modèles Standard a une pratique
std::string
type, que vous devriez regarder dans.OriginalL'auteur Nikolai Fetissov
Si vous êtes à la recherche pour juste brièvement l'accès des quatre derniers caractères, alors quelque chose comme
sera très bien (en plus de certains de vérification d'erreur).
Mais si vous voulez reproduire la fonctionnalité python, vous aurez besoin de copie les quatre derniers caractères. Encore une fois, utiliser strlen () pour obtenir la longueur (ou le stocker dans un endroit à l'avance), et ensuite utiliser strcpy (ou probablement une meilleure fonction stl qui a la même fonction). quelque chose comme...
(Note: Si vous ne copiez pas, alors vous ne pouvez pas libérer charone est jusqu'à ce que vous avez terminé d'utiliser chartwo. Aussi, Si vous ne copiez pas, si vous changez ensuite charone est plus tard, chartwo va changer aussi. Si c'est bon, c'est sûr que, juste à point pour le décalage.)
merci, écrit ça vite... est-ce mieux?
Mieux, mais chartwo besoin d'une longueur de 5. 🙂
OriginalL'auteur jmilloy
Cela fera:
OriginalL'auteur Chris Jester-Young
tableau de découpage en c++:
C'est juste l'un des emamples où le découpage est utile
J'ai fait une petite bibliothèque qui fait ce avec la compilation des limites de contrôles à https://github.com/Erikvv/array-slicing-cpp
OriginalL'auteur Erik van Velzen