2013-02-15 17 views
5

मुझे पहले यह समस्या थी लेकिन आसपास एक काम मिला, केवल इस बार एक काम एक विकल्प नहीं है।फंक्शन 'स्टॉफ' को हल नहीं किया जा सका

मैं 'stof' समारोह का उपयोग करने की कोशिश कर रहा हूँ, लेकिन मैं कह त्रुटियों हो रही है: 'stof' 'एसटीडी' की समारोह 'stof' एक सदस्य

मैं हल नहीं किया जा सकता है नहीं है सटीक तरीके से उपयोग कर रहा हूँ, तो इस पृष्ठ पर दिखाता है: http://www.cplusplus.com/reference/string/stof/

और यहाँ मेरी भी शामिल कर रहे हैं:

#include <iostream> 
#include <sstream> 
#include <string> 
using namespace std; 

तो, क्या मैं गलत कर रहा हूँ? और यदि कोई समाधान नहीं पाया जा सकता है तो क्या कोई स्ट्रिंग को फ़्लोट करने के लिए मुझे किसी अन्य तरीके से इंगित कर सकता है और स्ट्रिंग संगत नहीं होने पर इसे अपवाद फेंक सकता है?

संपादित करें: नमूना कार्यक्रम और त्रुटियों के साथ अद्यतन।

#include <iostream> 
#include <sstream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string testString = ""; 
    float testFloat = 0.0; 
    testFloat = std::stof(testString); 

    return 0; 
} 

त्रुटियों मैं कर रहे हैं:

विवरण संसाधन पथ स्थान प्रकार 'stof' नहीं है 'एसटीडी' main.cpp/असाइनमेंट/src लाइन 33 C/C++ समस्या के एक सदस्य

विवरण संसाधन पथ स्थान प्रकार समारोह 'stof' main.cpp/असाइनमेंट/src लाइन 33 सिमेंटिक त्रुटि

+7

'std :: stof' सी ++ 11 मानक में नया है। क्या आप वाकई सी ++ 11-संगत कंपाइलर का उपयोग कर रहे हैं? –

+1

मुझे यकीन नहीं है, मैं सी ++ के साथ बहुत अनुभवी नहीं हूं, लेकिन मेरे पास "+std = C++ 11" मेरे आदेशों में से एक है –

+0

आप भी कोशिश कर सकते हैं -stdlib = libC++ –

उत्तर

6

आप stof का उपयोग कर रहे हैं। जीसीसी 4.7.2 के मिनजीडब्ल्यू निर्माण में यह known bug है। इसे जीसीसी 4.8 के लिए तय किया जाना चाहिए। तारों को संख्याओं में परिवर्तित करने के लिए SO पर कई उदाहरण हैं। यहां one है। अपवाद व्यवहार प्राप्त करने के लिए आपको अपना खुद का रोल करना होगा, लेकिन उदाहरण आपको शुरू करना चाहिए।

+0

आह, जो तब सब कुछ समझाएगा। क्या आप किसी अन्य तरीके से जानते हैं कि मैं एक स्ट्रिंग को एक फ्लोट में परिवर्तित कर सकता हूं और अगर वे संगत नहीं हैं तो यह अपवाद फेंक सकता है? –

+2

['boost :: lexical_cast'] (http://www.boost.org/doc/libs/1_53_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast) विफल होने पर अपवाद फेंकता है। –

7

stof एक सी ++ 11 समारोह है हल नहीं किया जा सकता है। सुनिश्चित करें कि आपका कंपाइलर इसका समर्थन करता है (अभी तक कोई संकलक सी ++ 11 के लिए पूर्ण समर्थन नहीं है, हालांकि वहां के अधिकांश आधुनिक कंपाइलर्स अभी काफी बड़े सबसेट का समर्थन करते हैं)।

उदाहरण के लिए g ++ पर आपको इसे -std=c++11 विकल्प (std=c++0x प्री जी ++ - 4.7) के साथ सक्षम करना होगा।

यदि आप g ++ का उपयोग कर रहे हैं, तो कृपया यह जांचें कि आप किस संस्करण का उपयोग कर रहे हैं g++ -v - यदि यह पुराना संस्करण है (उदाहरण के लिए 4.2 की तरह) C++ 11 कार्यक्षमता उपलब्ध नहीं होगी।

+0

मैंने "-v" के साथ संकलित किया और पाया: जीसीसी संस्करण 4.7.2 (जीसीसी) बिल्ड रिपोर्ट में –

+1

बस जीसीसी 4.7 के साथ परीक्षण किया गया .2, यह निश्चित रूप से '-std = C++ 11' और '-std = C++ 0x' दोनों के साथ काम करता है। –

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