Change caractère dans un fichier
Bonjour,
j'ouvre un fichier csv en c++, ce fichier est décomposé comme ceci:
19/11/04,20/11/04,"100691","8MI","arret","6,75"
j'ai une fonction qui me permet de changer un caractère dans tout le fichier une autre qui supprime tout les caractère d'un type et un séparateur.
je voudrais récupérer le 6,75, il faudrait que je puisse changer "," et ," en ; par exemple et non pas que ,
ou mieux si vous savez comment importer un fichier xls en c++ !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
void SupprimeTousLesCaracteres( string &Str, char C )
{
Str.erase(
remove( Str.begin(), Str.end(), C ),
Str.end() );
}
void changeCaractere (string &str )
{
string::size_type i = 0;
while ((i = str.find(",", 0)) != (string::npos))
str.replace(i, 1, ";" );
}
int Split(vector<string>& vecteur, string chaine, char separateur)
{
vecteur.clear();
string::size_type stTemp = chaine.find(separateur);
while(stTemp != string::npos)
{
vecteur.push_back(chaine.substr(0, stTemp));
chaine = chaine.substr(stTemp + 1);
stTemp = chaine.find(separateur);
}
vecteur.push_back(chaine);
return vecteur.size();
}
int main(int argc, char *argv[])
{
string tableau[1000][11];
char* tab[1000][11];
int i=0;
int a=0;
int nbTabl;
string mon_fichier = "test1.csv"; // je stocke dans la chaîne mon_fichier le nom du fichier à ouvrir
ifstream fichier(mon_fichier.c_str());
if(fichier) // si l'ouverture a réussi
{
string ligne;
while(getline(fichier, ligne))
{
i=i+1;//compte le nb de lignes
string test=ligne;
SupprimeTousLesCaracteres( test, '"' );
vector<string> VecStr;
nbTabl = Split(VecStr, test, ',');
a=a+1;
for(int d = 0; d < nbTabl; ++d)
{
//cout << d << " : " << VecStr[d]<<endl ;
tableau[a][d]=VecStr[d];
size_t size = tableau[a][d].size() + 1;
char * buffer = new char[ size ];
// copier la chaîne
strncpy( buffer, tableau[a][d].c_str(), size );
tab[a][d]=buffer;
cout<<a<<":"<<d<<": "<<tab[a][d]<<endl;
}
}
fichier.close(); // je referme le fichier
}
else // sinon
cerr << "Erreur à l'ouverture !" << endl;
system("PAUSE");
return EXIT_SUCCESS;
} |
Merci