मैं एक सी ++ डीएलएल (प्रबंधित नहीं) प्रोजेक्ट बनाने के लिए वीएस 2008 का उपयोग कर रहा हूं और मुझे एक char * को लंबे समय तक परिवर्तित करने की आवश्यकता है। क्या ऐसा करने का कोई आसान तरीका है?स्ट्रिंग को लंबे समय तक परिवर्तित करें
अग्रिम में :)
मैं एक सी ++ डीएलएल (प्रबंधित नहीं) प्रोजेक्ट बनाने के लिए वीएस 2008 का उपयोग कर रहा हूं और मुझे एक char * को लंबे समय तक परिवर्तित करने की आवश्यकता है। क्या ऐसा करने का कोई आसान तरीका है?स्ट्रिंग को लंबे समय तक परिवर्तित करें
अग्रिम में :)
धन्यवाद _atoi64.
प्रयास करें यह char*
लेता है और __int64
देता है।
क्रेता सावधान रहें: atoi सुरक्षित प्रकार नहीं है और न ही यह किसी भी सीमा की जांच की पेशकश करता है! – Alan
हाँ, _atoi64 शायद एक अच्छा विकल्प नहीं है। यदि आप .NET ढांचे का उपयोग कर रहे हैं, तो char * के बजाय स्ट्रिंग पर ToInt64 का उपयोग क्यों न करें। यदि नहीं, तो मुझे लगता है कि स्ट्रेटोल या यह इक्विव जाने का वर्तमान मानक तरीका है और एटोई से सुरक्षित है। –
बूस्ट :: lexical_Cast <> –
सबसे आसान तरीका है
std::stringstream sstr(mystr);
__int64 val;
sstr >> val;
आप इस के लिए एक 64-बिट आवेदन काम करने के लिए लक्षित करने के लिए आवश्यकता हो सकती है std :: stringstream उपयोग करने के लिए है (यह भी सबसे typesafe है ...)।
आपको MSVC '__int64' भाषा एक्सटेंशन के बजाय' std :: int64_t' का उपयोग करना चाहिए। –
मुझे नहीं लगता कि std :: int64_t वीसी ++ 2008 – Alan
आह पर उपलब्ध है, आप सही हैं। मेरी गलती। –
आप को बढ़ावा देने का उपयोग कर रहे हैं, तो lexical_cast जाना मेरी राय में, जिस तरह से है।
long long ll = boost::lexical_cast<long long>(mystr)
एक और विकल्प स्ट्रिंग लाइब्रेरी में पाया गया स्टॉल() का उपयोग कर रहा है। एक सी ++ स्ट्रिंग लेता है।
long long ll = std::stoll(mystr);
यह इस सवाल का हर हफ्ते पॉप अप होता है या तो लगता है: - | –