就像在其他语言中一样简单,我似乎无法在d编程语言中找到一个选项,我可以将字符串(例如:“234.32”)转换为double / float / real。
使用std.c.stdio库中的atof仅在我使用常量字符串时才有效。 (例如:atof("234.32")
有效但atof(tokens[i]);
其中标记是动态数组,字符串不起作用。)
如何使用d-programming语言将字符串转换或解析为real / double / float?
答案 0 :(得分: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中转换的瑞士军刀。真是令人印象深刻!
答案 1 :(得分:8)
要将大多数类型转换为大多数其他类型,请使用std.conv.to
。 e.g。
auto d = to!double("234.32");
或
auto str = to!string(234.32);
另一方面,如果您希望从字符串中解析几个以空格分隔的值(在移动时从字符串中删除值),则使用std.conv.parse
。 e.g。
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);