d编程,解析或将字符串转换为double

Mar*_* R. 9 string double d typeconverter dmd

就像在其他语言中一样简单,我似乎无法在d编程语言中找到一个选项,我可以将字符串(例如:"234.32")转换为double/float/real.

使用std.c.stdio库中的atof仅在我使用常量字符串时才有效.(例如:atof("234.32")有效,但atof(tokens[i]);令牌是带有字符串的动态数组不起作用).

如何在d编程语言中将字符串转换或解析为real/double/float?

dav*_*v1d 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);
}
Run Code Online (Sandbox Code Playgroud)

std.conv 是在D转换的瑞士军刀.真是令人印象深刻!

  • 是的,'到'真是棒极了!:) (5认同)

Jon*_*vis 8

要从大多数类型转换为大多数其他类型,请使用std.conv.to.例如

auto d = to!double("234.32");
Run Code Online (Sandbox Code Playgroud)

要么

auto str = to!string(234.32);
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您要从字符串中解析几个以空格分隔的值(从中删除字符串中的值),请使用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);
Run Code Online (Sandbox Code Playgroud)