2013-04-05 4 views
7

क्या यह काम करेगा?QTextStream से QString कैसे बनाएं?

QString bozo; 
QFile filevar("sometextfile.txt"); 

QTextStream in(&filevar); 

while(!in.atEnd()) { 
QString line = in.readLine();  
bozo = bozo + line; 

} 

filevar.close(); 

क्या बोझो someextfile.txt की पूरीता होगी?

+0

आप फ़ाइल नहीं खोलते हैं, मेरा जवाब देखें। – dtech

+0

उत्तर के लिए धन्यवाद। मैं एक बीबी 10 ऐप बना रहा हूं और दुर्भाग्य से मैं इसे काम पर नहीं ला सकता हूं। मुझे यकीन है कि यह कुछ और है जो मैं कर रहा हूं। लेकिन मैं तब तक जवाब नहीं चुन सकता जब तक कि मुझे पता न लगे कि और क्या गलत है। – Dave

+0

अच्छा, यह काम करना चाहिए, यह सरल और सीधा है। चरणबद्ध तरीके से अपना कोड डीबग करें और आपको अपनी गलती मिल जाएगी। बीबी QFile नहीं बदलता है, इसलिए समस्या आपका कार्यान्वयन है। – dtech

उत्तर

16

लाइन से लाइन क्यों पढ़ी? आप इसे एक छोटे से अधिक का अनुकूलन और स्ट्रिंग की अनावश्यक फिर से आवंटन को कम के रूप में आप इसे करने के लिए लाइनों जोड़ सकते हैं:

QFile file(fileName); 
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; 
QTextStream in(&file); 
QString text;  
text = in.readAll(); 
file.close(); 
3

रूप ddriver का उल्लेख है, तो आपको पहले file.open(…); उसके अलावा का उपयोग कर फ़ाइल को खोलने चाहिए, हाँ bozo में शामिल होंगे आपके पास मौजूद कोड का उपयोग कर फ़ाइल की पूरी तरह से।

text = in.readAll(); 

यह एक नया तार के साथ text का स्थान ले लेगा तो text.reserve(file.size()); करने के लिए कॉल सिर्फ अप्रयुक्त काम किया होता: ddriver के कोड में नोट करने के लिए

एक बात है कि text.reserve(file.size()); क्योंकि निम्न पंक्ति पर अनावश्यक है।

+1

हां, आप सही हैं, स्ट्रिंग पर विचार करना आकार बदलने के लिए व्यर्थ है क्योंकि इसमें कोई प्रारंभिक डेटा शामिल नहीं है। मेरा जवाब भी ठीक करेगा ... – dtech

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