"deprecated conversion" tableau 2D + pointeur
Résolu
Bonjour,
lors de la compilation de mon programme j'obtiens"warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]"
ce que je souhaite faire c'est récupérer des chaînes de caractères un peu comme un tableau en 2D avec comme contrainte que la ligne soit un pointeur
J'ai donc codé comme ceci :
y'a-t-il une façon de reproduire ce résultat en n'ayant plus ce warning ? car en essayant d'autres façons de faire, je fais face à des "impossible to convert char to char*"
Cordialement, Debutant en webmastering
lors de la compilation de mon programme j'obtiens"warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]"
ce que je souhaite faire c'est récupérer des chaînes de caractères un peu comme un tableau en 2D avec comme contrainte que la ligne soit un pointeur
J'ai donc codé comme ceci :
char **timezone = new char* [25]; for(int i = 0; i < N; ++i) timezone[i] = new char[25]; timezone[0] = ("2015/10/06 06:23:54"); cout << timezone[0] << endl;
y'a-t-il une façon de reproduire ce résultat en n'ayant plus ce warning ? car en essayant d'autres façons de faire, je fais face à des "impossible to convert char to char*"
Cordialement, Debutant en webmastering
A voir également:
- "deprecated conversion" tableau 2D + pointeur
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Là je cherche des informations sur la manipulation des vecteurs mais c'est quelque chose que je ne maîtrise pas.
Il suffit de te référer à la documentation, tu verras qu'il y a de nombreux containers.
http://www.cplusplus.com/reference/vector/vector/
Une introduction :
https://forums.commentcamarche.net/forum/affich-37604421-introduction-a-la-stl-en-c-standard-template-library
Bonne chance
Il suffit de te référer à la documentation, tu verras qu'il y a de nombreux containers.
http://www.cplusplus.com/reference/vector/vector/
Une introduction :
https://forums.commentcamarche.net/forum/affich-37604421-introduction-a-la-stl-en-c-standard-template-library
Bonne chance
Bonjour,
Ici tu recopies l'adresse de la chaine statique "2015/10/06 06:23:54" (
Ensuite si l'idée de ton tableau est de ne construire qu'une liste de chaîne statique, inutile d'allouer les caractères associées à chacune de ces strings. Les strings statiques sont déjà allouées car elles sont statiques, du coup ton tableau timezone a juste besoin de les "référencer".
De plus il est inutile de faire un new ici vue que la taille de timezone semble connue à la compilation. Une allocation statique fera amplement l'affaire. Si tu veux faire une allocation dynamique il faudrait au moins faire le
Mais personnellement j'écrirais directement :
Ou même :
Bonne chance
Ici tu recopies l'adresse de la chaine statique "2015/10/06 06:23:54" (
const char *) dans un pointeur de type
char *. Sémantiquement ça n'est donc pas correct. Il faudrait à la rigueur recopier la chaîne statique dans timezone.
Ensuite si l'idée de ton tableau est de ne construire qu'une liste de chaîne statique, inutile d'allouer les caractères associées à chacune de ces strings. Les strings statiques sont déjà allouées car elles sont statiques, du coup ton tableau timezone a juste besoin de les "référencer".
De plus il est inutile de faire un new ici vue que la taille de timezone semble connue à la compilation. Une allocation statique fera amplement l'affaire. Si tu veux faire une allocation dynamique il faudrait au moins faire le
deletecorrespondant.
#include <iostream> int main(){ const char **timezone = new const char* [25]; timezone[0] = "2015/10/06 06:23:54"; std::cout << timezone[0] << std::endl; delete timezone; return 0; }
Mais personnellement j'écrirais directement :
#include <iostream> #include <array> int main(){ std::array<const char *, 25> timezones = { "2015/10/06 06:23:54", "2015/11/07 01:23:54", }; for (const char *timezone : timezones) { std::cout << timezone << std::endl; } return 0; }
Ou même :
#include <iostream> #include <vector> int main(){ std::vector<const char *> timezones = { "2015/10/06 06:23:54", "2015/11/07 01:23:54", }; for (const char *timezone : timezones) { std::cout << timezone << std::endl; } return 0; }
Bonne chance
Tout d'abord merci pour la réponse.
J'avais pour but de récupérer différentes valeurs d'un CSV et de les placer au sein des différents tableaux.
J'ai réalisé ceci afin de créer un objet qui récupérerait l'ensemble des valeurs timezone et d'autres composantes et ce dans le but de pouvoir éventuellement changer leur type (char to float pour effecteur des traitements mathématiques [ps: timezone me sert juste d'identifiant"]).
Il y a bel et bien un delete timezone[] à la fin de mon programme.
Là je cherche des informations sur la manipulation des vecteurs mais c'est quelque chose que je ne maîtrise pas.
J'avais pour but de récupérer différentes valeurs d'un CSV et de les placer au sein des différents tableaux.
J'ai réalisé ceci afin de créer un objet qui récupérerait l'ensemble des valeurs timezone et d'autres composantes et ce dans le but de pouvoir éventuellement changer leur type (char to float pour effecteur des traitements mathématiques [ps: timezone me sert juste d'identifiant"]).
Il y a bel et bien un delete timezone[] à la fin de mon programme.
Là je cherche des informations sur la manipulation des vecteurs mais c'est quelque chose que je ne maîtrise pas.