Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

informations sur les fichiers

40 réponses
Avatar
ricky
bonjour

je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification...

y a t il un truc miracle dans la stl a ce sujet ???

merci

@+
ricky

10 réponses

1 2 3 4
Avatar
Frédéri MIAILLE
"James Kanze" a écrit dans le message de
news:
"Frédéri MIAILLE" writes:

|> Et bien seekg()/seekp() peuvent placer le pointeur à la fin du
|> fichier et on peut utiliser tellg()/tellp() par la suite. Ce n'est
|> pas fiable ?

Non. Régarde le type de retour de tellg()/tellp(). Ce n'est pas un
type entier.
type streampos

et streampos est défini comme long.

Sous Unix et sous Windows, c'est un type qui a une conversion
automatique en entier. Et le résultat pourrait convenir pour
certaines définitions de taille de fichier. Mais au fond, avant de
lui répondre, il serait bien à savoir ce qu'il entend par
« taille de fichier ». Parce que l'interprétation intuitive,
ça serait ou bien la place que le fichier occupe sur la disque,
Oui oui exact.



--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.graphisme.programmation
fr.comp.os.ms-windows.programmation

Avatar
Frédéri MIAILLE
"James Kanze" a écrit dans le message de
news:
"Frédéri MIAILLE" writes:

|> Je sais pas, c'est HS.
|> findfirst(), findnext() etc.

|> Mais là, James va revenir et m'engueuler parce que je répond
|> à un truc HS.

Et quand est-ce que j'ai engueulé quelqu'un pour une réponse HS ?
Non mais j'avais envie d'avoir ton avis alors j'ai fait des appels de

phares. ;)

Ou même pour une question HS ? Je crois que je suis probablement le
plus tolérant des réguliers à cet égard, et je ne dis
quelque chose que quand quelqu'un insiste que c'est son droit, et qu'il
a raison de poster HS.
J'avais bien remarqué.



|> > pourtant des progres enormes avaient ete faits sur les chaines et
|> > autres trucs utiles !

|> Oui, mais des progrès dans un sens. Chez Microsoft, ils ont fait
|> ce dont ils avaient besoin.

Je l'espère. Comme chez Sun, chez Linux, chez ...

Ce qui est beau, c'est qu'avec des bibliothèques, tu ne vois pas tout
ça.

|> Alors toi, tu va devoir faire ce dont tu as besoin.

Pourquoi est-ce qu'il doit le faire lui-même, vue que ça existe
tout fait déjà.
Oui, je le dis plus tard.


|> Et c'est pour ça que nous sommes HS ici, simplement parce que ces
|> choses sont une déviance hérétique du langage C++ qui n'est
|> pas fait pour ça.

Tu n'as pas l'air d'avoir bien compris. C'est vrai qu'on ne peut pas
règler tous les problèmes du monde ici. Et que si tu travailles
sous un OS X, il faut que tu le connaisses, aussi bien que tu connais
C++. Et que si tu veux écrire des applications, il faut que tu
connaisses ton domaine applicatif. Et un tas d'autres choses aussi.
Quand je dis qu'il est HS à contre coeur certes, je dis qu'ici on est pas

sensé parler de répertoires et de listing de fichiers.
La méthode pour celà n'est pas dans le thème du newsgroup non ?

C'est comme ça, la vie. Tout n'est pas simple.
Ca dépends des jours et de mon humeur... girouettique.


|> Et les gens qui ont ajoutés ces choses au C++, qui ont
|> développé tellement de choses ne sont PAS les créateurs du
|> langage. Ils l'ont fait que l'utiliser. Et ici, tout le monde se
|> fout de cette utilisation qu'on en fait, ce qui nous intéresse,
|> c'est comment on l'utilise, tu saisis la nuance ?

J'ai l'impression que c'est toi qui n'as pas saisi la nuance. Ici, on
parle des problèmes qu'on a à utiliser le langage. Et un des
problèmes, tout à fait, c'est l'absence d'un support portable pour
certaines fonctionalités importantes. En revanche, quand j'ai un
problème qui a rapport au système d'exploitation, je me rapporte
à fr.comp.os.unix ; je n'en parle pas ici.
Il à dit :

"je cherche desesperemet a ecrire un programme en c++ qui me donne pour
un fichier donné sa taille et sa date de modification..."
Est-ce un problème à utiliser le langage ?

Pour être plus clair : des questions sur comment gérer des
fenêtres dans un programme C++ portable sont tout à fait
acceptable ici.
Je ne le savais pas ! Il me semblait que le newsgroup était vraiment détaché

des os et que la fenêtre était quand même reliée à un contexte super
spécifique.
Enfin, je viens, en me relisant, de voir que j'ai été un peu pas très
agréable avec le monsieur sans le vouloir, ayant eu un parler un peu rapide
cette fois-ci.
J'espère qu'il ne m'en tiendra pas rigueur.


--
Frédéri MIAILLE
fr.comp.lang.c
fr.comp.lang.c++
fr.comp.graphisme.programmation
fr.comp.os.ms-windows.programmation

Avatar
drkm
writes:

À condition de ne pas être coincé avec un compilateur antédiluvien
comme moi.


« comme moi » se rapporte-t-il à « être coincé avec ... » ou à
« antédiluvien » ?-)

--drkm

Avatar
Gabriel Dos Reis
drkm <fr.comp.lang.c++@fgeorges.org> writes:

| writes:
|
| > À condition de ne pas être coincé avec un compilateur antédiluvien
| > comme moi.
|
| « comme moi » se rapporte-t-il à « être coincé avec ... » ou à
| « antédiluvien » ?-)

devine ;-p

-- Gaby
Avatar
Philippe Elie
Frédéri MIAILLE wrote:
"James Kanze" a écrit dans le message de
news:

"Frédéri MIAILLE" writes:

|> Et bien seekg()/seekp() peuvent placer le pointeur à la fin du
|> fichier et on peut utiliser tellg()/tellp() par la suite. Ce n'est
|> pas fiable ?

Non. Régarde le type de retour de tellg()/tellp(). Ce n'est pas un
type entier.


type streampos
et streampos est défini comme long.


pas nécessairement, par exemple une
implémentation utilise:

typedef fpos<mbstate_t> streampos;


--
Philipp Elie


Avatar
ricky
snip

Gourgouilloult du Clapotis



bien compris :-)

et merci a tous pour vos reponses !
finalement j ai plus appris sur divers problemes que prevu au depart :-P

@+
ricky : pour une prochaine question HS
PS : non je blague :-)

Avatar
kanze
"Frédéri MIAILLE" wrote in message
news:<bls105$2nee$...

Quand je dis qu'il est HS à contre coeur certes, je dis qu'ici on est
pas sensé parler de répertoires et de listing de fichiers. La méthode
pour celà n'est pas dans le thème du newsgroup non ?


Oui et non, et c'est selon qui tu démandes :-). Formellement, le
language C++ en soi ne reconnaît pas les répertoires. Pratiquement,
c'est une question qui concerne la majeur partie des implémentations
C++, et donc à mon avis tout à fait acceptable ici. Quitte à avoir comme
réponse que toute réponse utile ne serait pas acceptable:-).

En fait, il y a deux attitudes -- ce qui imagine que le C++, c'est ce
qui dit ISO 14882, et rien de plus, et ceux qui accepte que dans la
pratique, ISO 14882 est une feuille de papier certes intéressante, mais
malheureusement ignorée par la plupart des implémentations avec
lesquelles on a affaire. Alors, dans ce deuxième cas, dans la mésure
qu'on n'est pas strictement propre à une seule implémentation, et une
seule seulement, il me semble acceptable.

Donc, dans ce cas, si tu es sous Windows, et que tu as un problème
précis avec findNext, ce n'est pas ici qu'il faut poser la question. De
même si tu es sous un système Posix, et que tu as un problème avec
readdir. En revanche, si tu ne sais pas qu'il existe findNext ou
readdir, et tu poses la question sur ce qui pourrait exister, non
seulement la question est acceptable (je crois que tout le monde est
d'accord là), mais je trouve qu'une réponse qui cite les noms de ces
fonctions, disons à titre d'exemple et en précisant bien qu'elle ne font
pas partie du langage, et tout à fait acceptable.

De même, une réponse du genre : voir boost::filesystem. Et dans la
mésure que Boost est une bibliothèque assez portable (et bien qu'il ne
marche pas avec ma platforme principale), j'estime que là, on pourrait
même en discuter des détails.

Et enfin, si c'est vrai que les gens qui insistent que c'est leur droit
de parler des détails de Windows ici m'énervent, je commence aussi à
être énervé par des gens qui disent « va voir ailleurs », sans expliquer
pourquoi. Ce n'est pas plus difficile à dire quelque chose du genre :

Le langage C++ n'a aucun support pour ce que tu veux faire. Il
faudrait donc régarder dans un groupe propre à ton système
d'exploitation.

C'est déjà plus poli -- surtout, ça suppose la bonne fois du posteur, et
tant qu'il n'a pas manifestement montré sa mauvaise fois, je considère
qu'il faut suppose la bonne fois. (J'ai vu dans un .sig une fois quelque
chose du genre : « Ne jamais mettre au compte de la méchanceté ce qui
peut s'expliquer par l'ignorance ou la stupitidé. » Je trouve que c'est
un bon conseil. À condition de ne pas oublier non plus qu'on est tous
ignorants et stupides dans prèsque tout.)

C'est comme ça, la vie. Tout n'est pas simple.


Ca dépends des jours et de mon humeur... girouettique.

|> Et les gens qui ont ajoutés ces choses au C++, qui ont développé
|> tellement de choses ne sont PAS les créateurs du langage. Ils
|> l'ont fait que l'utiliser. Et ici, tout le monde se fout de
|> cette utilisation qu'on en fait, ce qui nous intéresse, c'est
|> comment on l'utilise, tu saisis la nuance ?

J'ai l'impression que c'est toi qui n'as pas saisi la nuance. Ici,
on parle des problèmes qu'on a à utiliser le langage. Et un des
problèmes, tout à fait, c'est l'absence d'un support portable pour
certaines fonctionalités importantes. En revanche, quand j'ai un
problème qui a rapport au système d'exploitation, je me rapporte à
fr.comp.os.unix ; je n'en parle pas ici.


Il à dit :

"je cherche desesperemet a ecrire un programme en c++ qui me donne
pour un fichier donné sa taille et sa date de modification..."
Est-ce un problème à utiliser le langage ?


Je sais. Et c'est une question tout à fait acceptable, parce qu'on ne
peut pas supposer que tout le monde sache exactement tout ce qui est du
langage et ce qui ne l'est pas. (En Java, par exemple, c'est bien un
problème du langage.)

Pour être plus clair : des questions sur comment gérer des fenêtres
dans un programme C++ portable sont tout à fait acceptable ici.


Je ne le savais pas !


Le mot clé est « portable »:-). C-à-d qu'on exclut des questions sur des
détails MFC ou X-Windows. Mais comme je l'ai formulé, la question a
grosso modo deux réponses possibles : une qui parle de l'existance des
bibliothèques tièrces, et l'autre qui parle de comment organiser ton
code de façon à isoler les dépendances au maximum. Tout les deux sont
acceptables.

Il me semblait que le newsgroup était vraiment détaché des os et que
la fenêtre était quand même reliée à un contexte super spécifique.


La fenêtre même, peut-être. Mais si je veux écrire un code qui travaille
avec des fenêtres, il y a bien de chose à savoir en plus que les
paramètres de la fonction spécifique pour l'ouvrir.

Parce que personne va dire que simplement parce qu'un programme ouvre
une fenêtre, c'est propre à l'implémentation Microsoft.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
kanze
Gourgouilloult <gourgou_at_club-internet_point_fr> wrote in message
news:<3f813640$0$20950$...
ricky wrote:

je ne comprend d'ailleurs pas trop pourquoi .. on va me dire : ben
ca depend du systeme...
je repondrais : pour moi, une chaine de caractere ou la notion de
pointeur depend aussi completement du systeme, un cout aussi...
alors pourquoi ne pas pousser un peu le bouchin et metre au moins
des bases pratiques dans la stl, comme celle ci a integrer des
notions de string ou de recherche dans un fichier...


Les conteneurs linéaires ou les chaînes de caractères font partie des
structures algorithmiques de base. On s'en sert d'une façon ou d'une
autre dans tous les programmes de plus de 10 lignes, et on sait,
indépendamment de tout problème, ce qu'on peut en attendre. Pour les
entrées/sorties, c'est très dépendant du système effectivement, mais
là aussi on va s'en servir très souvent, alors on a fixé une interface
pour tout le monde.

Donc si quelque chose se retrouve dans la SL (qui, si j'ai bien
compris, est la généralisation de la STL aux choses plus dépendantes
du système, comme les entrées-sorties), c'est parce que tout le monde
en a besoin, à un moment ou un autre.


Pas vraiment.

Strictement parlant, si quelque chose se retrouve dans la bibliothèque
standard, c'est que quelqu'un l'a proposé, et a convaincu assez d'autres
qu'il le fallait. C'est en fin de compte une décision politique.

Dans la pratique, il y a plusieurs arguments qui marchent pour faire
accepter sa proposition par les autres. L'universalité de l'intérêt en
est un, mais ce n'est pas le seul, et il y a bien de choses dans la
norme qu'on savait avoir un intérêt limité. Il y a beaucoup de domaines
qui n'ont pas besoin de complexe, par exemple ; il y a même probablement
plus de domaines qui ont besoin d'un type décimal.

Un autre argument, c'est qu'on ne peut pas l'implémenter facilement ou
efficacement de façon portable. C'est au moins une partie de la
motivation initiale de valarray ; et c'est un argument absolu en ce qui
concerne des choses comme operator new, type_info, numeric_limits, etc.

Un autre argument, c'est que c'est un type qui apparaît aux niveaux des
interfaces. Implémenter une classe string, rien de plus facile. Mais si
je veux me servir des bibliothèques tièrces qui aussi se servent des
chaînes de caractères, il y a intérêt à n'avoir qu'une seule classe. Et
ceci vaut, à mon avis, même pour des types qui ne sont pas d'une
universalité totale -- c'est un argument absolu non seulement pour
string et vector, mais auss pour complex, par exemple.

Il y a aussi un argument qui favorise un ensemble cohérent. Je ne crois
pas, par exemple, que next_permutation soit vraiement d'une utilité
universelle. Mais elle fait partie d'un ensemble cohérent qui s'appeler
la STL. Or, la STL apportait plusieurs choses qu'on voulait : vector,
map et des itérateurs, au moins, me semblent essentiels, ne serait-ce
que parce qu'ils apparaissent souvent aux niveaux des interfaces. Et un
ensemble cohérent vaut bien mieux que des solutions ad hoc pour chaque
problème individuel.

Finalement, évidemment, il faut aussi une proposition. Un type décimal
pourrait bien être plus utile que complexe -- c'est encore plus certain
qu'une implémentation efficace sur la plupart des processeurs ne peut
pas s'écrire en C++ portable. Il avait tout pour faire partie de la
norme. Sauf une proposition.

[...]
Il y a dans ce que tu dis là une ambiguïté, que j'ai moi-même eu un
peu de difficulté à percer quand j'ai débarqué. S'il y a effectivement
une distinction entre le langage et sa librairie standard, les deux
sont idéalement indisociables. L'élément liant, c'est la norme, qui
définit ce qu'est C++, et qui comprend l'un et l'autre.


Pas seulement. L'élément liant, c'est que c'est ce qu'on entend
généralement sous le vocable C++. (Le forum existait bien avant la
norme.) Une chose qui n'existe que sur une implémentation précise, ce
n'est pas du C++ ; c'est du propre de cette implémentation. Une chose
qui existe sur un certain nombre d'implémentations, on commence à dire
que c'est peut-être le C++. Des bibliothèques portables, ça peut être
vue comme du C++ -- si la bibliothèque en question est disponible sur la
plupart des plateformes importantes, pourquoi pas. (Si on finit par être
inondé de trafic sur, disons wxWindows, on pourrait toujours considérer
la création d'un forum exprès pour elle. Mais on n'en est pas encore
là.)

Donc parler de la SL, ce n'est pas parler d'un «C++ étendu». C'est, à
la rigueur, ne pas se limiter au coeur du langage. En particulier, ça
n'est pas HS de causer de la SL, comme indiqué dans la charte :

<extrait>
Ce groupe est dédié aux discussions autour du langage C++ uniquement.
On y trouvera par exemple :
* des informations sur les bibliothèques standards (STL, String, etc...)
</extrait>


Reste à définir ce qu'on entend sous la vocable « langage C++ ». Ce qui
est certain, c'est que quand cette phrase a été écrite, elle ne se
limitait pas à la norme (parce que la norme n'existait pas encore). Ce
qui est aussi certain, c'est qu'elle voulait écarter des extensions
(bibliothèque ou d'autres) propre à une seule implémentation.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
kanze
drkm <fr.comp.lang.c++@fgeorges.org> wrote in message
news:...
writes:

À condition de ne pas être coincé avec un compilateur antédiluvien
comme moi.


« comme moi » se rapporte-t-il à « être coincé avec ... » ou à
« antédiluvien » ?-)


Les deux:-). (Enfin, c'était le compilateur que je pensais antédiluvien.
Mais ben, je reconnais qu'ayant vue la programmation sur IBM 1401, je ne
suis pas exactement un jeune. Ni le metier ni dans la vie.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Gabriel Dos Reis
writes:

[...]

| norme qu'on savait avoir un intérêt limité. Il y a beaucoup de domaines
| qui n'ont pas besoin de complexe, par exemple ; il y a même probablement
| plus de domaines qui ont besoin d'un type décimal.

C'est peu utile, en effet. Tellement peu utile que l'une des
premières classes C++ développées par Stroustrup porte justement sur
les complexes.

-- Gaby
1 2 3 4