Comment récupérer données dans un fichier .txt en C++
fzheng2015
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
bonjour,
je voudrais savoir comment on fait pour récupérer une donnée d'un fichier en c++. Par exemple : le fichier contient les nombres suivant : 12 45 63 85.
Je sais que le fichier contient le nombre 63 et je veut stocker le nombre suivant dans une variable. J'ai pensé à passer par "find":
Sans succès la console ne m'affiche rien.
Est-ce que vous savez comment on pourrait s'y prendre ? Merci beaucoup.
je voudrais savoir comment on fait pour récupérer une donnée d'un fichier en c++. Par exemple : le fichier contient les nombres suivant : 12 45 63 85.
Je sais que le fichier contient le nombre 63 et je veut stocker le nombre suivant dans une variable. J'ai pensé à passer par "find":
int main() { ifstream fichier ("D:/test.txt"); size_t found; double c(0), str(63); string a, b; string ligne; if (fichier) { while(getline(fichier, ligne)) { a += ligne + " " ; } found = a.find(str); c = found; monFlux.seekg(c, ios::beg); monFlux >> b; cout << b << endl; } return 0; }
Sans succès la console ne m'affiche rien.
Est-ce que vous savez comment on pourrait s'y prendre ? Merci beaucoup.
A voir également:
- Comment récupérer données dans un fichier .txt en C++
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Fichier rar - Guide
2 réponses
Bonjour,
Rechercher la chaîne "63" serait faux, supposons que le nombre 631 soit présent, on extrairait le 1.
Si on est sûr que 63 n'est pas le premier et qu'il est suivi, on fait :
a.find( " 63 " ).
On peut sinon lire les nombres un à un jusqu'au 63, puis lire le suivant.
Voire tout lire en mémoire dans un vector<>
Rechercher la chaîne "63" serait faux, supposons que le nombre 631 soit présent, on extrairait le 1.
Si on est sûr que 63 n'est pas le premier et qu'il est suivi, on fait :
a.find( " 63 " ).
On peut sinon lire les nombres un à un jusqu'au 63, puis lire le suivant.
Voire tout lire en mémoire dans un vector<>
std::string ligne;
std::vector<int> listeDeNombres;
while ( std::getline(fichier, ligne) ) {
std::istringstream iss(ligne);
// tous les nombres de la ligne mis dans le vector<>
std::copy( std::istream_iterator<int>(iss),
std::istream_iterator<int>(),
std::back_inserter(listeDeNombres));
}
// recherche de 63
auto itm = std::find(listeDeNombres.begin(),listeDeNombres.end(), 63);
// et prendre le suivant
if ( itm != listeDeNombres.end() ) {
++itm;
if ( itm != listeDeNombres.end() )
std::cout << *itm << std::endl;
else
std::cout << "rien apres\n";
}
else
std::cout << "pas de 63 dans le fichier\n";