2012-09-26 13 views
9

tan fácil como en otros idiomas, no puedo encontrar una opción en el lenguaje de programación d donde puedo convertir una cadena (por ejemplo, "234.32") en una doble/flotante/real.d programa, analiza o convierte cadena a doble

usando atof desde la biblioteca std.c.stdio solo funciona cuando uso una cadena constante. (por ejemplo: atof("234.32") funciona pero atof(tokens[i]); donde tokens es una matriz dinámica con cadenas que no funciona).

cómo convertir o analizar una cadena en un real/doble/flotante en el lenguaje de programación d?

Respuesta

16

Fácil.

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 es la navaja suiza de la conversión en D. Es realmente impresionante!

+5

yep, 'to' is freakin 'awesome! :) – Trass3r

8

Para convertir de casi cualquier tipo a cualquier otro tipo, use std.conv.to. p.ej.

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

o

auto str = to!string(234.32); 

Por otro lado, si usted está mirando para analizar varios valores separados por espacios en blanco de una cadena (la eliminación de los valores de la cadena a medida que avanza), a continuación, utilizar std.conv.parse . p.ej.

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);