IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

portabilité unix -> windows


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut portabilité unix -> windows
    Bonjour,
    j'ai fait un programme qui contient ça :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fstream f:
    string path="dossier1/dossier2/mon_fichier";
    f.open(path.c_str(), ios::out); /*ios::in ou out ça dépends des cas*/
    Est-ce que ça fonctionne sous windows ou est-ce qu'il faut d'abord récupérer le système d'exploitation courant et mettre "/" ou "\" selon le système?

    (j'ai pas de windows sous la main pour tester...)

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Si tu veux manipuler des fichiers et être multi-plateformes, il vaut mieux utiliser boost::filesystem.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    je connais pas, je vais me renseigner, thx

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Sinon, '/' marche très bien sous windows pour manipuler des flux.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Sinon, '/' marche très bien sous windows pour manipuler des flux.
    Tu veux dire que ce que j'ai codé plus haut va bien ouvrir le fichier "mon_fichier" placé dans le dossier2 qui est dans le dossier1?

    ce serait mon rêve

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Oui, le système de fichier windows accepte aussi bien / que \ (seuls problèmes, je crois, certaines fonctions liées au shell comme la gestion des boîtes file open, et la syntaxe à utiliser pour avoir des noms de fichiers de plus de MAX_PATH caractères).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    ok ok c'est donc parfait, étant donné que je ne fait que des appels à des chemins relatifs (en absolu j'imagine que ça aurait été plus compliqué...)

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Attention, windows n'accepte les / que depuis 2000 (pour NT4, je sais pas).

    Autrement dit, ça ne marchera pas sous 95, 98 et Me. ca dépend de ce que tu cherches comme portabilité.

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    of course, you could use \\test.dat .

    C'est une mise ne garde contre les \ car par exemple \t désigne une tabulation. Donc pour ouvrir un fichier nomé test.dat, il faut utiliser /test.dat ou bien \\test.dat, la premiere marchant sur tous les systèmes modernes (UNIX like, windows récents), la seconde sur tous les windows.

  11. #11
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    "All Windows" et "DOS" ne sont pas ce que j'appelle des "Windows récents".
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Alors c'est qu'il y a une entourloupe dans la SL pour gérer ça (ce qui est totalement possible).

  13. #13
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Ou alors c'est que tu te trompe dans ton affirmation. Quelle est ta source ?

  14. #14
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Quand j'ai fait ma transition OS de MS -> Linux (milieu des annees 90), les chemins avec / etaient deja acceptes par les OS de MS.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Je suis le seul a dire le contraire, je dois me tromper.

    Je testerais la prochaine fois que j'ai un pc sous 95 - 98 sous la main.

  16. #16
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Je suis pas sur niveau code pure (via la sl par exemple), mais je sais qu'en revenche si l'adresse en question est passée dans une des api de l'os ou via un programme appelé en console, alors effectivement "/" est invalide sous windows (même Xp).

    Dans le doute, j'utilise pas d'api d'OS si possible.

  17. #17
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    ha ben non... ca dépend....
    Le powershell utilise bien le '/' comme séparateur... et reconnait bien "ls" pour faire dir

    En fait, la plupart des fonctions système utilisent le '\\'... et toutes les fonctions CRT font un replace '/' '\\'... de toute maniere, comme les paths doivent être convertis en UNICODE avant, ca coute pas plus cher.

    En même temps on parle de vrai OS, pas de DOS (et donc... pas de W95/98/Me). D'ailleurs NT est capable de gérer les noms de fichier *exactement* comme linux (avec '/' et case dependency, c'est un setting du systeme de fichiers), donc je jeterai mon opprobe sur ceux qui font des trucs genre manipulation de la casse et autres utilisation de séparateurs prédéfinis en fonction de l'OS et non du file-system.
    Images attachées Images attachées  
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  18. #18
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Hmm je ne connaissais pas l'existence d'un powershell pour windows Xp...

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Citation Envoyé par nicroman Voir le message
    En même temps on parle de vrai OS, pas de DOS (et donc... pas de W95/98/Me).
    Ça n'a aucun sens, de parler de vrai et de faux OS.
    Il n'y avait pas d'émulateur, dans ce que tu cites, il me semble.

    je jeterai mon opprobe sur ceux qui font des trucs genre manipulation de la casse et autres utilisation de séparateurs prédéfinis en fonction de l'OS et non du file-system.
    Sauf que les systèmes de fichiers sont il me semble toujours introduits par les OS. On peut donc considérer qu'ils font partie de l'OS (NTFS -> NT File System).

  20. #20
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par oodini Voir le message
    Ça n'a aucun sens, de parler de vrai et de faux OS.
    Il n'y avait pas d'émulateur, dans ce que tu cites, il me semble.
    Ben si... Windows 95/98/ME était une surcouche de DOS, et n'avait rien à voir (sauf quelques signatures d'API) avec NT3.51 ou NT4, ou ... NT5 (XP) et encore moins NT6 (Vista), dans lesquels le DOS n'existait plus (et le Shell était une surcouche de l'OS).

    Sauf que les systèmes de fichiers sont il me semble toujours introduits par les OS. On peut donc considérer qu'ils font partie de l'OS (NTFS -> NT File System).
    Du tout... j'ai un disque NFS sur mon Windows Vista, et un (très vieux) Mac pointe allègrement sur du NTFS, NFS et MacFS
    Mais bon... l'OS se charge de faire les traductions, mais rien ne dit qu'un OS (windows par exemple) utilisera *toujours* '\' comme séparateur !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Portabilité IHM Python : unix, linux, windows
    Par devl83 dans le forum GUI
    Réponses: 3
    Dernier message: 08/09/2006, 17h49
  2. winsock.h et portabilité unix
    Par zais_ethael dans le forum MFC
    Réponses: 12
    Dernier message: 25/10/2005, 19h51
  3. choix: implementation oracle sous unix ou windows ?
    Par marcalexis dans le forum Oracle
    Réponses: 25
    Dernier message: 23/09/2005, 16h18
  4. Réponses: 4
    Dernier message: 29/08/2005, 18h42
  5. existe-il un LDAP gratuit compatible Unix et Windows ?
    Par lalakers dans le forum Développement
    Réponses: 4
    Dernier message: 19/08/2005, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo