Prendre une tranche d'un tableau (string) C++

Résolu
simac - Modifié par simac le 6/09/2014 à 14:25
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 19 sept. 2014 à 19:47
Bonjour, comme exprimé dans le titre, j'aimerais savoir si il existe un moyen (fonction,opérateur...) qui permet de prendre une tranche d'un tableau, et plus particulièrement d'un string, pour l'utiliser dans strcpy().
Par exemple:

char monChar[100];
string monString="abcde";

strcpy(monChar,monString[0,3]);

Merci.
Cordialement
Simac

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 sept. 2014 à 14:50
Bonjour,

de mes souvenirs avec le C, il y a strncopy (ou strncpy) qui accepte en 3ième argument la longueur max à copier.

strncpy(monChar,monString,3);

0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 sept. 2014 à 18:19
Bonjour.

Si tu es en C++, tu n'as aucune raison d'utiliser strcpy, ou même un char*... Pose-toi d'abord la question de la pertinence d'utilisation, li y a de forte chance que tu partes sur quelque chose d'alambiquée.

Je vais tout de même répondre techniquement à ta question, tout en reprécisant que tu pars sur un design potentiellement mauvais.

char monChar[100];
std::string monString = "abcde";
strcpy(monChar, monString.substr(0, 3).c_str());


__________________________________________________________________________________________________
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
D'accord, merci pour vos réponses, l'extraction était pour un fichier texte: prendre deux informations dans un fichier (du genre
nom=prénom
) pour les stocker dans deux chaines de caractères.

Merci encore! Cette question est résolue!

Simac
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
Modifié par Whismeril le 19/09/2014 à 19:46
Comme il est dit "tableau", alors c'est bien char[].
Sans aucune boucle ni autre biniouterie:
char A[24];
char res[4];

*((DWORD*) res) = *((DWORD*) A);
res[3] = 0;


ciao...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
19 sept. 2014 à 19:47
Si la question est résolue, merci de la marquer comme tel avec le lien sous le titre.
Je le fais cette fois.
0
Rejoignez-nous