2012-09-26 12 views
9

को अन्य भाषाओं में जितना आसान है, मुझे डी प्रोग्रामिंग भाषा में कोई विकल्प नहीं दिख रहा है जहां मैं एक स्ट्रिंग (उदा: "234.32") को एक कन्वर्ट कर सकता हूं डबल/नाव/असली।डी प्रोग्रामिंग, पार्स या स्ट्रिंग को डबल

std.c.stdio लाइब्रेरी से एटॉफ़ का उपयोग केवल तभी काम करता है जब मैं निरंतर स्ट्रिंग का उपयोग करता हूं। (उदा: atof("234.32") काम करता है लेकिन atof(tokens[i]); जहां टोकन एक गतिशील सरणी है जिसमें तार काम नहीं करते हैं)।

डी-प्रोग्रामिंग भाषा में एक स्ट्रिंग को वास्तविक/डबल/फ्लोट में कैसे परिवर्तित या पार्स करने के लिए?

उत्तर

16

आसान।

import std.conv; 
import std.stdio;  

void main() { 
    float x = to!float("234.32"); 
    double y = to!double("234.32"); 

    writefln("And the float is: %f\nHey, we also got a double: %f", x, y); 
} 

std.conv डी में रूपांतरण के स्विस सेना चाकू यह वास्तव में प्रभावशाली है!

+5

हाँ, 'to' freakin 'कमाल है! :) – Trass3r

8

किसी भी प्रकार से किसी भी अन्य प्रकार से कनवर्ट करने के लिए, std.conv.to का उपयोग करें। जैसे

auto d = to!double("234.32"); 

या

auto str = to!string(234.32); 

दूसरी ओर, यदि आप एक स्ट्रिंग (के रूप में तुम जाओ स्ट्रिंग से मूल्यों को हटाने) से कई खाली स्थान के अलग किए गए मान पार्स करने के लिए देख रहे हैं, तो std.conv.parse का उपयोग । जैसे

auto str = "123 456.7 false"; 

auto i = parse!int(str); 
str = str.stripLeft(); 
auto d = parse!double(str); 
str = str.stripLeft(); 
auto b = parse!bool(str); 

assert(i == 123); 
assert(d == 456.7); 
assert(b == false); 
संबंधित मुद्दे