c++ - Extract multiple words to one string variable -
std :: stringstream कनवर्टर ("टॉम स्कॉट 25"); Std :: स्ट्रिंग नाम; इंट उम्र; कनवर्टर & gt; & gt; नाम & gt; & gt; उम्र; यदि (कन्वर्टर.फ़ाइल ()) {// यह निश्चित रूप से विफल रहता है}
मैं एक स्ट्रिंग चर में दो या दो से अधिक शब्द निकालना चाहता हूं I अभी तक मैंने पढ़ा है, ऐसा लगता है कि यह संभव नहीं है। यदि हां, तो इसे कैसे करें? मुझे नाम
की संख्या (आयु) से पहले सभी अक्षर प्राप्त करना चाहते हैं।
मुझे sscanf का उपयोग करने में सबसे अधिक आरामदायक महसूस होता है, लेकिन मैं स्पष्ट रूप से नहीं कर सकता।
मुझे जो कुछ चाहिए, उदाहरण के लिए उम्र
से पहले सभी शब्द निकालने की क्षमता है।
अभी तक पोस्ट किए गए समाधानों में से अधिकांश वास्तव में विनिर्देश को पूरा नहीं करते- कि उम्र के सभी डेटा को नाम के रूप में माना जाएगा उदाहरण के लिए, वे "रिचर्ड वान डे रोथस्टीन" जैसे नाम से असफल हो जायेंगे।
जैसा कि ओपी ने नोट किया है, scanf के साथ आप ऐसा कुछ कर सकते हैं: scanf ("% [^ 0-9] % D ", नाम, & amp; आयु);
, और यह इसे अभी ठीक पढ़ा होगा। मान लें कि यह रेखा आधारित इनपुट है, मैं वैसे भी ऐसा करना चाहता हूं:
std :: string temp; Std :: getline (infile, temp); // तकनीकी रूप से "[^ 0- 9]" सही काम करने की आवश्यकता नहीं है ... sscanf (temp.c_str (), "% [^ 0123456789]% d", नाम, और आयु); दुर्भाग्यवश, iostreams एक स्कैनसेट रूपांतरण के समान प्रत्यक्ष एनालॉग प्रदान नहीं करते हैं - गललाइन एक सीमांकक तक पढ़ सकते हैं, लेकिन आप केवल एक वर्ण को सीमांकक के रूप में निर्दिष्ट कर सकते हैं। यदि आप वास्तव में scanf और कंपनी का उपयोग नहीं कर सकते हैं, तो अगली स्टॉप या तो हाथ से कोड होगा (उम्र की शुरुआत होगी temp.find_first_of ("0123456789");
) या किसी आरई का उपयोग करें पैकेज (TR1 अगर आपका कंपाइलर इसे आपूर्ति करता है, अन्यथा शायद)।
Comments
Post a Comment