2009-05-31 13 views
8

मैं C++ और सर्वर पर चल में प ¤ टक्स पर आधारित है में एक फ़ाइल को खोलने की कोशिश कर रहा हूँ।यूनिक्स पर कोई फ़ाइल खोलने C++ का उपयोग कर

string filename = "../dir/input.txt"; works but 
string filename = "~jal/dir1/dir/input.txt"; fails 

क्या सी ++ में फ़ाइल खोलने का कोई तरीका है जब फ़ाइल नाम प्रदान किया गया है तो दूसरे प्रारूप में है?

उत्तर

12

~jal विस्तार खोल द्वारा किया जाता है (बैश/csh/जो कुछ भी), सिस्टम में ही है, तो अपने कार्यक्रम ~jal//home/jal/ नाम है, नहीं फ़ोल्डर में देखने के लिए कोशिश कर रहा है द्वारा नहीं।

मैं एक सी सांकेतिक शब्दों में बदलनेवाला नहीं कर रहा हूँ, लेकिन getpwent() हो सकता है कि तुम क्या जरूरत है।

+0

+1 मूल बातें याद रखने के लिए ... duh .... – ojblass

+0

मेरा मतलब है कि मेरे द्वारा दोहर प्रश्न के पोस्टर नहीं हैं। – ojblass

+0

मैग्नस, $ HOME में * आपका * homedir - और ~ jal उपयोगकर्ता 'jal' के homedir में फैला हुआ है। – grawity

9

आप स्ट्रिंग को स्कैन कर सकता है, उचित निर्देशिका द्वारा ~user की जगह।

POSIX समारोह wordexp कि करता है, और कुछ अन्य बातें

  • चर प्रतिस्थापन, तो आप $(echo foo) तरह $HOME
  • वैकल्पिक आदेश प्रतिस्थापन, उपयोग कर सकते हैं की तरह (निष्क्रिय किया जा सकता)
  • अंकगणितीय विस्तार, $((3+4))
  • शब्द विभाजन, जैसे ~/a ~/b को दो शब्दों में
  • वाइल्डकार्ड विस्तार, *.cpp
  • और के हवाले से, "~/a ~/b" की तरह की तरह है कि
+1

+1, मुझे wordexp के बारे में पता नहीं था। – zvrba

संबंधित मुद्दे