2017-06-01 7 views
-1

J'essaie d'ouvrir certains fichiers automatiquement en C++. Le titre du fichier est le même mais seul le numéro du fichier est différent.Comment puis-je ouvrir certains fichiers automatiquement en C++

comme celui-ci 'test_1.txt test_3.txt test_6.txt ...'

Ces chiffres ne sont pas répertoriés dans l'ordre régulier.

Et voici mon code

`

#include <fstream> 
#include <sstream> 
#include <string> 
#include <iostream> 

using namespace std; 

int main(){ 
    int n[20]= {4,7,10,13,16,19,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; 
    ifstream fp; 
    ofstream fo; 
    fp.open(Form("test%d.txt",n)); 


char line[200]; 
if(fp == NULL) 
{ 
    cout << "No file" << endl; 
    return 0; 
} 
if(fp.is_open()) 
{ 
    ofstream fout("c_text%d.txt",n); 
    while (fp.getline(line, sizeof(line))) 
    { 
     if(line[4] == '2' && line[6] == '4') 
     { 
      fout<<line<<"\n"; 

     } 
    } 
    fout.close(); 
} 
fp.close(); 
return 0; 
}` 

Maintenant, la fonction 'Formulaire' ne fonctionne pas. et je n'ai pas d'autre idée. Si vous avez des commentaires ou une idée, s'il vous plaît dites-moi. Merci!

+0

Utilisez un 'std :: stringstream' pour créer la chaîne à partir du modèle et du compteur. – Barmar

Répondre

0

Vous avez plusieurs problèmes dans votre code.
1. Comme vous nous l'avez dit, vos fichiers s'appellent test_NR.txt, mais vous essayez d'ouvrir testNR.txt. Donc, vous êtes absent le _
2. fp.open(Form("test_%d.txt", n[i]); devrait fonctionner. Vous ne pouvez pas vous référer à un tableau entier, vous devez indiquer une valeur spécifique.
3. Si vous voulez ouvrir tous les fichiers les uns par les autres, vous devez entourer votre code dans une boucle.

Exemple:

#include <fstream> 
#include <sstream> 
#include <string> 
#include <iostream> 

using namespace std; 

int main(){ 
    int n[20]= {4,7,10,13,16,19,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; 
    ifstream fp; 
    ofstream fo; 
    for(int i=0; i<sizeof(n); i++) 
    { 
     fp.open(Form("test_%d.txt",n[i])); 

     char line[200]; 
     if(fp == NULL) 
     { 
      cout << "No file" << endl; 
      return 0; 
     } 
     if(fp.is_open()) 
     { 
      ofstream fout("c_text%d.txt",n[i]); 
      while (fp.getline(line, sizeof(line))) 
      { 
       if(line[4] == '2' && line[6] == '4') 
       { 
        fout<<line<<"\n"; 
       } 
      } 
      fout.close(); 
     } 
    fp.close(); 
    } 

    return 0; 
    } 

* Je n'ai pas testé le code, mais si je ne méconnais quelque chose de stupide, il devrait fonctionner.

+0

Qu'est-ce que 'Form()'? –

+0

Form() est la fonction 'ROOT'. Je suis désolé pour Mlle expliquer. –