Comment récupérer données dans un fichier .txt en C++

fzheng2015 Messages postés 2 Statut Membre -  
Dalfab Messages postés 720 Statut Membre -
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":
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:

2 réponses

stavax Messages postés 25 Statut Membre
 
Bonjour,

Faire un double str(63) n'a aucune sens.
a.find('63') serait plus adéquate içi.
0
Dalfab Messages postés 720 Statut Membre 101
 
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<>
    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";
0