तो मैं डबल और लिंक्ड सूची में पहले और अंतिम नाम जोड़ने की कोशिश कर रहा हूं। मेरे पास "स्ट्रिंग, स्ट्रिंग" प्रारूप के साथ अलग-अलग लंबाई की विभिन्न टेक्स्ट फ़ाइलें हैं, और मैं अपने डेटा को स्टोर करने के लिए सूची का उपयोग कर रहा हूं।सूचियों और जोड़ों के बारे में भ्रम
मैं इस कोड का उपयोग कर रहा हूँ:
typedef std::list< std::pair<string,string> > listPair;
...
list<pair<string, string> > mylist;
ifstream myFile;
myFile.open("20.txt");
pair<string, string> stuff;
while (myFile >> stuff.first >> stuff.second)
{
mylist.push_back(stuff);
}
listPair::iterator iter = mylist.begin();
for(;iter != mylist.end();iter++)
{
string s = (*iter).first;
cout << s << endl;
string c = (*iter).second;
cout << c << endl;
}
अब समस्या मैं आ रही हैं कि सबसे पहले, सूची में अंतिम आइटम नहीं जोड़ा जा रहा है। प्रत्येक फ़ाइल की तरह ही अंत रेखा को याद करता है, इसलिए यह थोड़ा उलझन में है।
भी, मैं यह सुनिश्चित करने के लिए "mylist.size()" कर रहा हूं कि सभी नाम जोड़े गए हैं, और यह मुझे भ्रमित कर रहा है क्योंकि 99 नाम वाले टेक्स्ट फ़ाइल के लिए कहें, यानी 99 पंक्तियों की टेक्स्ट, यह कहेंगे (यह नहीं भूल रहा कि यह केवल अंतिम पंक्ति को खोने के कारण 98 में पढ़ता है) कि सूची का आकार 48 है।
क्यों 48? क्या ऐसा कुछ है क्योंकि मैंने जोड़े किए हैं, जो अभी भी समझ में नहीं आएंगे जैसे कि यह जोड़ों में नहीं पढ़ रहा था, वास्तव में इसके बारे में दोगुना हो जाएगा, क्योंकि जोड़े केवल पहले और अंतिम नाम को एक मान के रूप में लेते हैं।
मेरे लिए दिमागी दबदबा।
एक बार फिर आपकी सभी मदद के लिए धन्यवाद!
शायद आप 'getline' की तलाश में हैं? –
एक साइड नोट के रूप में, एक सामान्य उद्देश्य कंटेनर के रूप में आपको 'सूची' के बजाय 'वेक्टर' का उपयोग करना चाहिए। जिस तरह से आप इसका उपयोग कर रहे हैं, मुझे यहां 'सूची' की आवश्यकता दिखाई नहीं दे रही है। –
क्या आप इनपुट फ़ाइल '20.txt' (या कम से कम एक निकास) जोड़ सकते हैं? शायद आपका इनपुट ठीक से प्रारूपित नहीं है। – Zeta