Bonjour,
J'aimerais connaître une méthode pour inverser des blocs d'un fichier txt
par exemple :
6
1
1
2
2
3
5
4
4
deviendrait :
5
4
4
2
2
3
6
1
1
Merci d'avance !
#include
#include
#include
#include
#include
#include
template
class Block{
public:
Block(size_t n):_size(n){}
void push(const Value &v){
_v.push_back(v);
}
template
void flood(Container &l){
std::copy(_v.rbegin(), _v.rend(), std::back_inserter(l));
_v.clear();
}
bool full()const{
return _v.size()==_size;
}
protected:
std::vector _v;
size_t _size;
};
template
Container reverse(const Container& v, size_t blockSize){
Container out;
Block b(blockSize);
for(auto it = v.rbegin(); it!=v.rend(); ++it){
b.push(*it);
if(b.full()){
b.flood(out);
}
}
return out;
}
template
std::string toss(const Container& v){
std::stringstream oss;
std::copy(v.begin(), v.end(),
std::ostream_iterator(oss, " "));
return oss.str();
}
int main(){
std::vector v={6,1,1,2,2,3,5,4,4};
//std::list v={'a','b','c','d','e','f','g','h','i'};
typedef decltype(v)::value_type valueType;
const auto& out=reverse(v, 3);
std::cout<<toss(v)<<std::endl<<toss(out)<<std::endl;
return 0;
}
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{
ifstream liste("/home/modis/Desktop/Traitement/liste_fichiers_txt.txt", ios::in);//ouverture de la liste de fichiers
if(liste)
{
string lisligne;
string filename0, filename1;
string ligne,of_ligne;
int n_ligne=40701, i=0,j;
double double1, double2, double3, double4, double5, double6;
string s1,s2,s3,s4,s5,s6;
for(j=0;j> filename0; //lecture du nom du fichier à ouvrir dans un fichier texte avec l'ensemble des noms
filename1 = "/home/modis/Desktop/Traitement/fichiers_invers/" + filename0;
filename0 = "/home/modis/Desktop/Traitement/données_modèles/données_modèles/2011/" + filename0;
ifstream fichier0(filename0.c_str(), ios::in);
ofstream fichier1(filename1.c_str(), ios::out | ios::binary);
if(fichier0 && fichier1)
{
while(getline(fichier0, ligne))
{
ostringstream oss1,oss2,oss3,oss4,oss5,oss6;
if(i==n_ligne-2-220*j) //220 lignes par bloc
{
fichier0 >> double1 >> double2 >> double3 >> double4 >> double5 >> double6;
oss1 << double1;
oss2 << double2;
oss3 << double3;
oss4 << double4;
oss5 << double5; oss6<<double6;
s1 = oss1.str();
s2 = oss2.str();
s3 = oss3.str();
s4 = oss4.str();
s5 = oss5.str();
s6 = oss6.str();
of_ligne= s1 + " " + s2 + " " + s3 + " " + s4 + " " + s5 + " " + s6 + "\n";
fichier1 << of_ligne;//ecriture de la ligne dans le fichier output
//vide les ostringstream
oss1.str("");
oss2.str("");
oss3.str("");
oss4.str("");
oss5.str("");
oss6.str("");
}
else i++;//si je ne suis toujours pas à la ligne voulue
}
}
else
cerr<<"Impossible d'ouvrir le fichier!1"<<endl;
i=0;//remise à zero pour reparcourir le fichier
}
}
}
else
cerr<<"Impossible d'ouvrir le fichier!2"<<endl;
return 0;
}Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :