Программирование, анализ или преобразование строки в двойное

Так же легко, как и в других языках, я не могу найти опцию в языке программирования d, где я могу преобразовать строку (например: "234.32") в double/float/real.

Использование atof из библиотеки std.c.stdio работает только тогда, когда я использую постоянную строку. (Например: atof("234.32") работает но atof(tokens[i]); где токены это динамический массив со строками не работает).

Как преобразовать или разобрать строку в реальный / двойной / плавать на языке d-программирования?

2 ответа

Решение

Легко.

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. Это действительно впечатляет!

Чтобы преобразовать любой другой тип в любой другой, используйте 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);
Другие вопросы по тегам