दुर्भाग्यवश कई "लाइन एंडिंग" रखने का कोई तरीका नहीं है। आप क्या कर सकते हैं उदाहरण के साथ लाइन पढ़ा है std::getline
और इसे std::istringstream
में डालें और पर एक लूप में std::getline
(';'
विभाजक के साथ) का उपयोग करें।
हालांकि आप इसे देखने के लिए Boost iostreams लाइब्रेरी देख सकते हैं, इसके लिए इसकी कार्यक्षमता है।
enum class cascade { yes, no };
std::istream& getline(std::istream& stream, std::string& line, const std::string& delim, cascade c = cascade::yes){
line.clear();
std::string::value_type ch;
bool stream_altered = false;
while(stream.get(ch) && (stream_altered = true)){
if(delim.find(ch) == std::string::npos)
line += ch;
else if(c == cascade::yes && line.empty())
continue;
else break;
}
if(stream.eof() && stream_altered) stream.clear(std::ios_base::eofbit);
return stream;
}
cascade::yes
विकल्प पाया लगातार परिसीमकों गिर:
स्रोत
2012-10-15 07:47:52
ठीक है, धन्यवाद, यह काफी अच्छा है! मैंने एक लूप लिखा है जो std :: stringstream.put(): प्रत्येक char को तब तक संपादित करें जब तक यह '\ n' या ';' नहीं मिलता है, और फिर स्ट्रिंग प्राप्त करने के लिए stringstream.str() का उपयोग किया जाता है। – Erika