2010-11-24 18 views
7

मैं sscanf() सहित पुराने असुरक्षित सी फ़ंक्शंस से छुटकारा पाने की कोशिश कर रहा हूं। अभी मैंस्ट्रिंगस्ट्रीम से मूल्यों को अनदेखा करें (जैसे sscanf में% * f)

#include <sstream> 
std::string str = "111 222.2 333 444.4 555"; 
std::stringstream sstr(str); 
int i, j, k; 
float dummy1, dummy2; 
sstr >> i >> dummy1 >> j >> dummy2 >> k; 

का उपयोग कर रहा हूं, मुझे बस इसके पूर्णांक की आवश्यकता है। क्या उन गंदे डमी चर से बचने का कोई तरीका है?

अग्रिम धन्यवाद और आपका दिन शुभ हो!

उत्तर

4

sstr.ignore(128,' ');

अगले अंतरिक्ष जब तक ध्यान न दें, या जब तक 128 वर्ण पढ़ा गया।

+2

ओह, मनमाने ढंग से निरंतर। –

+0

मैं सहमत हूं - क्या मनमाने ढंग से निरंतर बिना ऐसा करने का कोई तरीका नहीं है? –

+4

यदि आप निश्चित रूप से जानते हैं कि आप एक डिलीमीटर की तलाश में हैं, तो आप ss.ignore (std :: numeric_limits :: max(), ':') का उपयोग कर सकते हैं; –

3

आप किसी एक डमी (प्रकार प्रति) के साथ प्राप्त कर सकते हैं:

std::string str("111 222.2 333 444.4 555"); 
std::stringstream sstr(str); 
int i, j, k; 
float dummy; 
sstr >> i >> dummy >> j >> dummy >> k; 
+1

यह काम करता है, लेकिन बहुत बेवकूफ लगता है - क्या एसएस >> ए >> अनदेखा नहीं है >> बी; ? –

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