warnings à la compilation
Bonjour.
j'ai fait un petit programme qui est en fait un split. C'est très très basique mais c'était pour le plaisir
Voici donc le code :
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
| #include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]) {
ifstream SOURCE("Fichier.txt", ios::in);
if(!SOURCE) {
cerr << "Impossible d'ouvrir le fichier !" << endl;
exit(1);
}
string s;
vector<string> mots;
while(getline(SOURCE, s)) {
bool done = false;
while(!done) {
int emplacement = s.find(" ");
if(emplacement == string::npos) {
done = true;
}
else {
string mot = s.substr(0, emplacement);
mots.push_back(mot);
s = s.substr(emplacement+1, s.size());
}
}
}
for(size_t i = 0; i < mots.size(); ++i)
cout << mots[i] << endl;
mots.clear();
(void) argc;
(void) argv;
return 0;
} |
Mon soucis c'est qu'à la compilation j'ai ce warning :
Code:
1 2 3
| g++ -Wall -W -pedantic -ansi split.cpp -o split
split.cpp: In function ‘int main(int, char**)’:
split.cpp:22: attention : comparaison entre des expressions entières signée et non signée |
J'aimerai bien éviter de l'avoir mais ... je ne sais pas comment modifier mon code pour le plus avoir ceci
[edit] Je viens de trouver une solution mais je ne sais pas si c'est vraiment super. J'ai modifier la ligne pour avoir ceci :
Code:
if(emplacement == (int) string::npos) {
Y a t il une meilleure solution ?