2012-04-13 9 views
0

J'ai un fichier texte avec deux colonnes et un nombre inconnu de lignes. Je veux donc charger deux colonnes dans un vecteur bidimensionnel dynamique. Voici ce que j'ai jusqu'ici, ça ne marche pas. Si c'était une dimension, je sais comment faire. L'espace blanc sépare deux colonnes. Puisque je lis 2 colonnes, j'ai seulement besoin de 2 vecteurs de taille n.Comment lire un fichier texte dans un vecteur dynamique bidimensionnel en C++?

vector<vector<string> > component; 
ifstream in_file("/tmp/FW.txt", ios::binary); 

//Check if the file is open 
if(!in_file.is_open()) 
{ 
    cout << "File not opened..." << endl; 
    exit (1); 
} 

for(int i=0; !in_file.eof(); i++) 
{ 
    in_file >> component.push_back(); 
    //component.push_back(in_file); 
} 

Quelqu'un peut-il me dire comment faire fonctionner cela? Aussi, si vous pouvez me dire comment imprimer le vecteur bidimensionnel, de sorte qu'il ressemble à un fichier original, ce serait bien aussi. Ce besoin de fonctionner sur Linux (Red Hat)

+0

Si vous avez un format connu pour déterminer ce qui constitue colonne1 et colonne2 qui le rend plus facile à analyser. Vous n'êtes pas 'push_back()' ou l'opérateur d'extraction '>>' correctement. Je suggérerais aussi de regarder la méthode 'read()' sur 'std :: ifstream' – AJG85

+0

Voulez-vous que le résultat soit un vecteur de taille 2 de vecteurs taille-n, ou un vecteur taille-n de taille-2 des vecteurs? –

Répondre

2

Que diriez-vous:

vector< vector<string> > component; 
ifstream in_file("/tmp/FW.txt"); // N.B., not ios::binary since you're reading text strings 
vector<string> vs(2); 
// Assume they are separated by just whitespace 
while(in_file >> vs[0] >> vs[1]) 
{ 
    component.push_back(vs); 
} 
Questions connexes