Convertir un tableau de vecteur de String en pointeur

Résolu
fcoutel Messages postés 14 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 21 juillet 2006 - 20 juil. 2006 à 09:25
fcoutel Messages postés 14 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 21 juillet 2006 - 21 juil. 2006 à 08:08
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

steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 juil. 2006 à 23:21
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;

}
3
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
20 juil. 2006 à 10:37
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;
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
20 juil. 2006 à 19:37
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 ?
0
fcoutel Messages postés 14 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 21 juillet 2006
20 juil. 2006 à 22:49
 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***
0

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

Posez votre question
fcoutel Messages postés 14 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 21 juillet 2006
21 juil. 2006 à 08:08
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"
0