Программирование, анализ или преобразование строки в двойное
Так же легко, как и в других языках, я не могу найти опцию в языке программирования 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);