2012-04-22 43 views
7

सी ++ में, क्या fstream लाइब्रेरी (या कोई लाइब्रेरी) में कोई फ़ंक्शन है जो मुझे निकालने के बिना '\ n' के डिलीमीटर में एक रेखा पढ़ने की अनुमति देता है?सी ++ fstream फ़ंक्शन जो निकालने के बिना एक रेखा पढ़ता है?

मुझे पता है कि चोटी() फ़ंक्शन प्रोग्राम को अगले चरित्र पर बिना किसी निकालने के पढ़ने में 'पिक' करने की अनुमति देता है, लेकिन मुझे एक चोटी() की तरह फ़ंक्शन की आवश्यकता होती है जो कि पूरी लाइन के लिए होती है।

+0

इसके लिए आपका उपयोग केस क्या है? एक एक्सवाई समस्या की तरह थोड़ा लगता है। –

+0

इसे एक टेक्स्ट फ़ाइल पढ़ने के लिए और इससे मैं एक peek() फ़ंक्शन जैसे फ़ंक्शन का उपयोग करना चाहता हूं यह निर्धारित करने के लिए कि अगला मूल्य जो पढ़ रहा है वह एक संगत स्ट्रिंग है या नहीं। नीचे दी गई विधि मेरी समस्या के लिए पूरी तरह से काम किया। – SexyBeastFarEast

उत्तर

11

आप getline, tellg और seekg के संयोजन के साथ ऐसा कर सकते हैं।

#include <fstream> 
#include <iostream> 
#include <ios> 


int main() { 
    std::fstream fs(__FILE__); 
    std::string line; 

    // Get current position 
    int len = fs.tellg(); 

    // Read line 
    getline(fs, line); 

    // Print first line in file 
    std::cout << "First line: " << line << std::endl; 

    // Return to position before "Read line". 
    fs.seekg(len ,std::ios_base::beg); 

    // Print whole file 
    while (getline(fs ,line)) std::cout << line << std::endl; 
} 
+0

धन्यवाद क्लिस्ट यह विधि पूरी तरह से काम करता है! तो मुझे लगता है कि कोई रेखा नहीं है() फ़ंक्शन की तरह एक रेखा पढ़ती है? – SexyBeastFarEast

+0

सच है, ऐसा कोई झांक-फ़ंक्शन नहीं है। – Kleist