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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
if(emplacement == (int) string::npos) {
Y a t il une meilleure solution ?