2009-10-08 13 views
15

से नई लाइन बदलें मैं विंडोज में चलता हूं और एक टेक्स्ट फ़ाइल आउटपुट करता हूं जो बाद में लिनक्स में एक प्रोग्राम में इनपुट बन जाता है। यह प्रोग्राम गलत तरीके से व्यवहार करता है जब उन फ़ाइलों को दिया जाता है जिनमें केवल एलएफ की बजाय सीआर + एलएफ की नई लाइनें होती हैं।सी ++ सीआर + एलएफ से एलएफ

मुझे पता है कि मैं डॉस 2unix जैसे टूल का उपयोग कर सकता हूं, लेकिन मैं अतिरिक्त कदम छोड़ना चाहता हूं। विंडोज़ के बजाय लिनक्स की नई लाइन का उपयोग करने के लिए विंडोज़ में सी ++ प्रोग्राम प्राप्त करना संभव है?

उत्तर

23

हां, आपको न्यूलाइन अनुवाद को रोकने के लिए फ़ाइल को "बाइनरी" मोड में खोलना होगा।

आप यह कैसे करते हैं इस पर निर्भर करता है कि आप फ़ाइल को कैसे खोल रहे हैं।

का उपयोग fopen:

FILE* outfile = fopen("filename", "wb"); 

ofstream का उपयोग करना:

std::ofstream outfile("filename", std::ios_base::binary | std::ios_base::out); 
+1

सहमत हुए। धारा को बाइनरी के रूप में खोलें, और कोई अनुवाद नहीं होता है। इस तरह के स्ट्रीम के लिए '\ n' या std :: endl का आउटपुट केवल लाइन-फीड में होता है। – Clifford

-1

ठीक है, तो यह शायद नहीं है कि आप क्या सुनना चाहते हैं, लेकिन यहाँ मेरी $ 0.02 इस के साथ मेरा अनुभव पर आधारित है:

यदि आपको विभिन्न प्लेटफ़ॉर्म के बीच डेटा पारित करने की आवश्यकता है, तो लंबे समय तक आप संभवतः एक प्रारूप का उपयोग बंद कर सकते हैं जो परवाह नहीं करता कि लाइन ब्रेक कैसा दिखता है । यदि यह टेक्स्ट फाइलें हैं, तो उपयोगकर्ता कभी-कभी उनके साथ गड़बड़ करेंगे। यदि लाइन अंतराल को गड़बड़ कर वे आपके आवेदन को विफल कर देते हैं, तो यह एक समर्थन गहन आवेदन होगा।

वहां किया गया, ऐसा किया गया, एक्सएमएल पर स्विच किया गया। समर्थन लोगों को बहुत खुश बनाया।

+0

अगर मैं केवल प्रारूपों का चयन कर सकता हूं तो मुझे ..... * खोखले हंसी * के साथ काम करना होगा। – GiantCowFilms

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