2012-09-26 40 views
9

dễ dàng như ở các ngôn ngữ khác, tôi không thể tìm thấy tùy chọn bằng ngôn ngữ lập trình d nơi tôi có thể chuyển đổi chuỗi (ví dụ: "234.32") thành đôi/phao/thực.d lập trình, phân tích cú pháp hoặc chuyển đổi chuỗi thành đôi

sử dụng atof từ thư viện std.c.stdio chỉ hoạt động khi tôi sử dụng chuỗi không đổi. (ví dụ: atof("234.32") hoạt động nhưng atof(tokens[i]); trong đó thẻ là mảng động với chuỗi không hoạt động).

cách chuyển đổi hoặc phân tích cú pháp một chuỗi thành một/đôi/float trong ngôn ngữ lập trình d?

Trả lời

16

Dễ dàng.

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 là con dao quân đội của chuyển đổi ở D. Nó thực sự ấn tượng!

+5

yep, 'to' thật kỳ diệu! :) – Trass3r

8

Để chuyển đổi từ hầu hết mọi loại sang hầu hết mọi loại khác, hãy sử dụng std.conv.to. ví dụ.

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

hoặc

auto str = to!string(234.32); 

Mặt khác, nếu bạn đang tìm kiếm để phân tích một vài giá trị khoảng trắng tách ra từ một chuỗi (loại bỏ các giá trị từ các chuỗi như bạn đi), sau đó sử dụng std.conv.parse . ví dụ.

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