O'zaro platformalarda fayl yo'llari bilan ishlash

Platformani kesib o'tish yo'llarini boshqaradigan har qanday C++ GNU mustaqil sinflari mavjudmi? Mening ilovalarim Windows va Linuxda yaratilgan. Bizning konfiguratsiya fayllarimiz alohida katalogdagi boshqa faylga ishora qiladi. Men boshqa konfiguratsiya faylining yo'lini Linux yoki Windowsda ishlaydigan sinfga o'qishni xohlayman.

Qaysi sinf ikkala tizimda foydalanish uchun yo'llarni tarjima qilish uchun eng kichik maydonni taklif qiladi? rahmat


person Superpolock    schedule 23.09.2008    source manba


Javoblar (4)


Mutlaq yo'llardan foydalanmasangiz, tarjima qilishning hojati yo'q - Windows avtomatik ravishda oldinga qiyshiq chiziqni teskari chiziqqa aylantiradi, shuning uchun agar siz nisbiy yo'llarni oldinga chiziqli yo'l ajratgichlari bilan ishlatsangiz, siz oltin rangga ega bo'lasiz. Agar iloji bo'lsa, mutlaq yo'llardan qochishingiz kerak.

person Adam Rosenfield    schedule 23.09.2008
comment
Menda oddiy ehtiyoj uchun bu juda yaxshi. - person Superpolock; 23.09.2008
comment
turli qochish, tirnoq va cheklovchi qoidalariga ega bo'lgan operatsion tizimlarga ko'chirilmaydi (masalan, Mac) - person jwfearn; 24.09.2008

boost::filesystem ni sinab ko'ring.

person gbjbaanb    schedule 23.09.2008
comment
Boost juda to'liq ko'rinadi, lekin mening asosiy ehtiyojlarim uchun ortiqcha. Kirish uchun rahmat. - person Superpolock; 23.09.2008

Fayl tizimi kutubxonasi sizga yordam berishi mumkin.

person Jonas Engström    schedule 23.09.2008

Ko'p usullar mavjud, IMHO to'g'ri javob yo'llarni manipulyatsiya qilmaslik uchun dasturingizni qayta loyihalashdir. Men javobni shu yerda joylashtirdim: https://stackoverflow.com/a/40980510/2345997 bu tegishli.

yo'llar:

  1. Foydalanuvchiga konfiguratsiya faylidan o'qish o'rniga ko'rib chiqilayotgan yo'lni belgilash imkonini beruvchi buyruq qatori variantini qo'shing.
  2. Foydalanuvchi asosiy yo'lni belgilashi uchun buyruq qatori variantini qo'shing. Konfiguratsiya faylidagi yo'llar ushbu asosiy yo'l ostida joylashgan deb talqin qilinadi.
  3. Konfiguratsiya faylingizni uchtaga bo'ling. Bitta fayl o'zaro platforma konfiguratsiyasiga ega bo'ladi, boshqa fayl faqat Windows konfiguratsiyasiga ega bo'ladi va yakuniy fayl faqat Linux konfiguratsiyasiga ega bo'ladi. Keyin foydalanuvchi Windows va Linux uchun to'g'ri yo'lni belgilashi mumkin. Windows-da sizning dasturingiz o'zaro platforma konfiguratsiya faylini va faqat Windows konfiguratsiya faylini o'qiydi. Linuxda u platformalararo faylni va faqat Linux konfiguratsiya faylini o'qiydi.
  4. Konfiguratsiya faylini tahlil qilish uchun oldindan ishlov berishni qo'shing. Bu sizga bitta konfiguratsiya fayliga ega bo'lish imkonini beradi, bunda foydalanuvchi dasturingiz qaysi OS da ishlayotganiga qarab fayldagi ba'zi qatorlarni e'tiborsiz qoldirishi mumkin. Shunday qilib, foydalanuvchi faylga yo'lni ikki marta belgilashi mumkin bo'ladi. Bir marta Linux uchun, bir marta Windows uchun.
  5. Dizaynni shunday o'zgartiringki, fayllar har doim bajariladigan faylingiz bilan bir xil katalogda joylashgan bo'ladi - keyin foydalanuvchi fayllarga yo'llarni emas, balki faqat konfiguratsiya faylida fayl nomlarini belgilaydi.
  6. "/" ni "\" ga almashtiradigan oddiy funksiyadan foydalaning. Keyin foydalanuvchiga yo'llarni Linux yo'llari sifatida ko'rsatishi kerakligini hujjatlang va bu transformatsiya Windows uchun qo'llaniladi.
  7. Buning uchun o'zingizning mini-tilingizni yarating va uni foydalanuvchiga hujjatlang. Masalan: "/" - katalog ajratuvchisini belgilaydi, {root} - fayl tizimining ildiziga kengaytiradi, {cwd} - joriy katalogga kengaytiradi, {app} - ilovangiz yo'liga va hokazo ... Keyin foydalanuvchi ikkala platformada ham fayl yo'llarini belgilashi mumkin: {root}/myfiles/bob.txt.
  8. Ba'zi yo'llar ikkala platformada ishlaydi. Masalan: ../my files/bill.txt kabi nisbiy yo'llar. Ilovangizni faqat shu yo'llar bilan ishlashini cheklang. Ushbu cheklovni va ilovangiz foydalanuvchiga yo'llarni qanday boshqarishini hujjatlang.
person user1976    schedule 06.12.2016