Convertir un tableau de vecteur de String en pointeur [Résolu]

Signaler
Messages postés
14
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
21 juillet 2006
-
Messages postés
14
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
21 juillet 2006
-
Bonjour,


J'ai cree un tableau dynamique a 2D de type string vector<vector<std::string>> tab,  je voudrais savoir quel est le meilleur moyen de le convertir en char***.

Merci d'avance.

5 réponses

Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Ca se résume à 3 boucles, tu peux essayer ca (non testé)

#include <vector>

#include <string>

#include


using namespace std;

char *** vvs_dump(const vector<vector<string> > & v)

{

    char *** p = new char**[v.size()];

    

    for(size_t i = 0; i < v.size(); i++)

    {

        p[i] = new char*[v[i].size()];

        

        for(size_t j = 0; j < v[i].size(); j++)

        {

            p[i][j] = new char[v[i][j].size() + 1];

            

            copy(v[i][j].begin(), v[i][j].end(), p[i][j]);

            p[i][j][v[i][j].size()] = '\0';

        }

    }

    

    return p;

}
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
3
bon je m'y connais pas trop en cpp mais essaye de récuperer l'adresse de base de ton tableau puis char *** a = (char***)addr_de_base;
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Ce n'est pas si simple, il faudrais parcourir tout les éléments de type
std::string, les dumper et stocker les adresses dans un tableau de char
*. Mais rien que de considérer un vector<vector< > > comme
un tableau 2D c'est pas super car rien ne dit que tout les vector
contenues on la meme taille.

Pour quoi faire au fait ?
Messages postés
14
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
21 juillet 2006

 oui c est vrai les vecteurs n'ont pas la meme taille, donc le tableau aura plein de trous! C est pour envoyer des donnees de cpp a java. L'interface entre les deux demande un tableau char***
Messages postés
14
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
21 juillet 2006

oui merci cela marche sauf que cela ne produit pas un tableau a
dimension constante. Mais cela me donne de bonnes bases merci. Il
faudra que je prenne le max des v[i].size()]et faisant p[i] = new char*[max] puis ajouter un test dans la boucle for(size_t j = 0; j < v[i].size(); j++) pour le "paddding"