2012-09-26 20 views
9

就像它在其他語言一樣簡單,我似乎無法在d編程語言中找到一個選項,我可以將字符串(例如:「234.32」)轉換爲雙/浮點/真實。d編程,解析或轉換字符串加倍

使用來自std.c.stdio庫的atof只適用於我使用常量字符串。 (例如:atof("234.32")工作,但atof(tokens[i]);其中令牌是一個動態數組與字符串不起作用)。

如何在d編程語言中將字符串轉換或解析爲真/雙/浮點數?

回答

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是D的瑞士軍刀,它真的讓人印象深刻!

+5

是的,'到'是怪胎'真棒! :) – 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);