मैं पहले पंक्ति पढ़ता हूं और पहले और अंतिम शब्द को पूर्णांक में परिवर्तित करता हूं। शिथिल:
std::string line;
std::getline(infile, line);
size_t ofs_front = line.find(' ');
size_t ofs_back = line.rfind(' ');
int front = std::strtol(line.substr(0, ofs_front).c_str(), NULL, 0);
int back = std::strtol(line.substr(ofs_back).c_str(), NULL, 0);
std::string text = line.substr(ofs_front, ofs_back - ofs_front);
आप कुछ संशोधनों के रिक्त स्थान से छुटकारा पाने के करना होगा (जैसे को बढ़ा देते ऑफसेट सभी रिक्त स्थान ऊपर हडप करने के लिए), और आप त्रुटि जाँच के बहुत सारे जोड़ना चाहिए।
आप सभी आंतरिक पाठ के अंदर रिक्त स्थान को सामान्य बनाने में चाहते हैं, तो वहाँ एक और समाधान है स्ट्रिंग धाराओं का इस्तेमाल करके:
std::vector<std::string> tokens;
{
std::istringstream iss(line);
std::string token;
while (iss >> token) tokens.push_back(token);
}
// process tokens.front() and tokens.back() for the integers, as above
std::string text = tokens[1];
for (std::size_t i = 2; i + 1 < tokens.size(); ++i) text += " " + tokens[i];
स्रोत
2011-11-19 16:36:25
एक समय में एक पंक्ति को पढ़ना, आप एक सबस्ट्रिंग पार्सर बना सकते हैं जो आपको विभिन्न मनमानी टर्मिनेटर का उपयोग करके सेगमेंट पर गणना करने देता है। केरेक का जवाब बहुत अच्छा है, लेकिन अगर आपको इस तरह की चीज काफी बार करने की ज़रूरत है, और आपको एक सामान्य उच्च दक्षता उपकरण की आवश्यकता है, तो यह दृष्टिकोण हमारे लिए सबसे अच्छा काम करता है – Mordachai