J'écris un programme qui lit des données de différents fichiers, qui sont donnés comme des chaînes d'entrée, et les stocke dans un vecteur de vecteurs. Le problème que je ne suis pas capable de déboguer la boucle qui lit des fichiers différents. J'ai fermé l'objet ifstream, effacé la chaîne en utilisant la fonction vide ... mais elle se termine quand je donne le second nom de fichier en entrée.lire des données à partir de fichiers, nom de fichier en entrée
Je copie le code pour votre lecture. C'est une fonction appelée par une autre autre fonction. Transposectr transpose une matrice.
code:
vector<vector<float> > store1,store2;
ifstream bb;
string my_string;
float carrier;
vector<float> buffer;
cout<<"enter the file name"<<endl;
getline(cin,my_string);
while (my_string!="end")
{
bb.open(my_string.c_str());
while (!bb.eof())
{
bb >> carrier;
if (bb.peek() == '\n' || bb.eof())
{
buffer.push_back(carrier);
store1.push_back(buffer);
buffer.clear();
}
else
{
buffer.push_back(carrier);
}
}
bb.close();
buffer.clear();
transposectr1(store1);
storex.push_back(store1[1]);
storey.push_back(store1[0]);
store1.clear();
my_string.empty();
cout<<"done reading the file"<<endl;
cout<<"enter the file name"<<endl;
getline(cin,my_string);
}
merci! Mais ça a marché. Il y avait un bug pour effacer le nom du fichier et j'utilise cin pour obtenir le nom du fichier maintenant. Plus tôt j'utilisais getline. Je ne sais pas pourquoi cela n'a pas fonctionné plus tôt .. Merci d'avoir répondu. Cordialement Saurabh Inde –