मैं जैसे एक प्रारूप में डेटा के साथ एक सरल CSV फ़ाइल पार्स करने के लिए, कोशिश कर रहा हूँ:फास्ट, सी में सरल सीएसवी पार्सिंग ++
20.5,20.5,20.5,0.794145,4.05286,0.792519,1
20.5,30.5,20.5,0.753669,3.91888,0.749897,1
20.5,40.5,20.5,0.701055,3.80348,0.695326,1
तो, एक बहुत ही सरल और निश्चित प्रारूप फ़ाइल। मैं इस डेटा के प्रत्येक कॉलम को एसटीएल वेक्टर में संग्रहीत कर रहा हूं। इस तरह के रूप में मैं सी ++ रास्ता मानक पुस्तकालय का उपयोग कर रहने के लिए कोशिश की है, और एक पाश के भीतर मेरी कार्यान्वयन तरह दिखता है:
string field;
getline(file,line);
stringstream ssline(line);
getline(ssline, field, ',');
stringstream fs1(field);
fs1 >> cent_x.at(n);
getline(ssline, field, ',');
stringstream fs2(field);
fs2 >> cent_y.at(n);
getline(ssline, field, ',');
stringstream fs3(field);
fs3 >> cent_z.at(n);
getline(ssline, field, ',');
stringstream fs4(field);
fs4 >> u.at(n);
getline(ssline, field, ',');
stringstream fs5(field);
fs5 >> v.at(n);
getline(ssline, field, ',');
stringstream fs6(field);
fs6 >> w.at(n);
समस्या है, यह बेहद धीमी गति से है (वहाँ डेटा प्रति 1 लाख से अधिक पंक्तियां हों फ़ाइल), और मुझे थोड़ा सा सुरुचिपूर्ण लगता है। मानक पुस्तकालय का उपयोग कर एक तेज दृष्टिकोण है, या मैं सिर्फ stdio कार्यों का उपयोग करना चाहिए? ऐसा लगता है कि यह पूरा कोड ब्लॉक एक fscanf कॉल को कम कर देगा।
अग्रिम धन्यवाद!
निम्नलिखित प्रश्न का डुप्लिकेट::
तब आप अपने स्ट्रिंग पार्स करने में कुछ इस तरह कर सकता है http://stackoverflow.com/questions/1120140/csv-parser-in-c –
सी सीएसवी पार्सर: http://sourceforge.net/projects/cccsvparser सी सीएसवी लेखक: http://sourceforge.net/projects/cccsvwriter – SomethingSomething