标签: dmd

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

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

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

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

string double d typeconverter dmd

9
推荐指数
2
解决办法
1682
查看次数

d编程语言:标准输入问题还是误解?

这是一个简单的程序,它从stdin读取行并将它们输出到stdout.

module test;

import std.stdio; 

void main(string[] args) 
{

    foreach (int i, string line; lines(stdin)) {
        writeln(line ~ " (test)");
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows DMD编译器v2.052.

如果我做 : type file.txt | test.exe

程序将"test"一词附加到file.txt的每一行,并将它们输出到控制台.

但是我最后得到一个错误:

std.stdio.StdioException@std\stdio.d(2138): Bad file descriptor

也许我错过了什么?它让我疯狂!:)

stdin d exception dmd

8
推荐指数
2
解决办法
553
查看次数

如何在Win7和dmd(D2)中使用gtkD?

我下载gtkD-1.5.1并解压缩到某个gtkD目录.接下来我该怎么办?我不明白我是否必须编译并将其链接到某些lib或只是在我的代码中链接到它?


编辑:(@ dsimcha)

dsss buildgtkD主目录中的命令给了我这个:

Could not detect versions.
Could not detect versions.
Could not detect versions.
Could not detect versions.
Could not detect versions.
undemofy

Could not detect versions.
Could not detect versions.
atk => DO-atk

cairo => DO-cairo

gdk => DO-gdk

gdkpixbuf => DO-gdkpixbuf

gio => DO-gio

glade => DO-glade

glib => DO-glib

gobject => DO-gobject

gthread => DO-gthread

gtk => DO-gtk

gtkc => DO-gtkc

pango => DO-pango
Run Code Online (Sandbox Code Playgroud)

但是没有创建lib?

d dmd gtkd windows-7

8
推荐指数
1
解决办法
1194
查看次数

基于D中的关联数组进行排序

我试图按照D应用程序在各个地方给出的示例.通常在学习语言时,我会从示例应用程序开始并自行更改,纯粹是为了测试内容.

引起我注意的一个应用是计算传入的文本块中的单词的频率.由于字典是在关联数组中构建的(元素存储频率,键是单词本身),输出没有任何特定的顺序.因此,我尝试根据网站上给出的示例对数组进行排序.

无论如何,这个例子显示了一个lambda'排序!(...)(数组);' 但是当我尝试代码时,dmd将无法编译它.

这是简化的代码:

import std.stdio;
import std.string;

void main() {
   uint[string] freqs;

   freqs["the"] = 51;
   freqs["programming"] = 3;
   freqs["hello"] = 10;
   freqs["world"] = 10;

   /*...You get the point...*/

   //This is the actual example given, but it doesn't 
   //seem to work, old D version???
   //string[] words = array(freqs.keys);        

   //This seemed to work
   string[] words = freqs.keys;

   //Example given for how to sort the 'words' array based on 
   //external criteria (i.e. the frequency of the words from 
   //another array). This …
Run Code Online (Sandbox Code Playgroud)

d dmd

7
推荐指数
1
解决办法
786
查看次数

Digital Mars D编译器; 获取ASM输出

我正在阅读Andrei Alexandrescu关于D编程语言的书.他是一位优秀的作家,在解释D语言方面做得非常出色.然而,当我无法想象ASM输出或某些关键字的后果(例如输入,输出等或其他结构)时,我发现某些结构难以理解.即使我的ASM非常糟糕而且我从不使用它,但是能够理解某些关键字如何对计算机和正在进行的工作有所帮助,这对我有很大帮助.

DMD编译器有许多有趣的功能(代码覆盖,生成接口(头文件),生成文档,分析,...)但我还没有看到转换输出ASM代码.编译器会生成.obj文件,并从阅读以下链接:http://www.digitalmars.com/ctg/obj2asm.html我怀疑我需要一个工具来手动转换目标文件.我更喜欢编译器开关,有吗?

在该页面的底部,我链接到一个页面,我可以在其中支付包含该工具的产品.来自GNU背景,我非常不满意.这仅适用于C/C++,还是适用于D编译器?

有没有其他方法可以将这些.obj文件转换为可读的ASM代码,还是必须使用其他D编译器(如GDC或LDC)来获取ASM输出?我不愿意.DMD由创始人自己创建,我敢肯定他正确地实现了大部分功能/大部分优化.

那么,我该如何看一看ASM代码呢?

谢谢.

compiler-construction d dmd

7
推荐指数
2
解决办法
1278
查看次数

D表现:联盟vs @property

我正在将我们的统治SDK移植,增强和D-atizing 从C#到D.目前正在处理Vector2数学模块.

以下两种结构之间是否会有任何性能差异?我的基准测试表现出相同的性能,但我想获得一些专家见解:)

struct Vector2(T)
{
    T x, y;
    @property T u() { return x; }
    @property T v() { return y; }
    @property void u(T value) { x = value; }
    @property void v(T value) { y = value; }
}

struct Vector2(T)
{
    union { T x, u; }
    union { T y, v; }
}
Run Code Online (Sandbox Code Playgroud)

显然,我想使用工会来实现语法简洁.但使用它们有任何不可预见的陷阱吗?我不熟悉他们的低级细节.

另外,我正在添加类似于HLSL/GLSL的vector属性语法,例如,vec1.yxz + = vec2.xyz; 有......没有..可能的方式与工会而不是@property这样做?

benchmarking d dmd gdc

7
推荐指数
1
解决办法
219
查看次数

用D解析文件

我是D的新手,想要解析表格的生物文件

>name1
acgcgcagagatatagctagatcg
aagctctgctcgcgct
>name2
acgggggcttgctagctcgatagatcga
agctctctttctccttcttcttctagagaga
>name2
gag ggagag
Run Code Online (Sandbox Code Playgroud)

这样我就可以捕获'header'name1,name2,name3以及相应的'sequence'数据,..acgcg ... stuff.

现在我有了这个.但它只会逐行迭代,

import std.stdio;
import std.stream;
import std.regex;


int main(string[] args){
  auto filename = args[1];
  auto entry_name = regex(r"^>(.*)"); //captures header only
  auto fasta_regex = regex(r"(\>.+\n)([^\>]+\n)"); //captures header and correponding sequence

  try {
    Stream file = new BufferedFile(filename);
    foreach(ulong n, char[] line; file) {
      auto name_capture = match(line,entry_name);
      writeln(name_capture.captures[1]);
    }

    file.close();
  }
  catch (FileException xy){
    writefln("Error reading the file: ");
  }

  catch (Exception xx){
    writefln("Exception occured: " ~ …
Run Code Online (Sandbox Code Playgroud)

parsing d dmd

7
推荐指数
1
解决办法
646
查看次数

std.algorithm.joiner(string [],string) - 为什么结果元素是dchar而不是char?

我尝试编译以下代码:

import std.algorithm;
void main()
{
    string[] x = ["ab", "cd", "ef"]; // 'string' is same as 'immutable(char)[]'
    string space = " ";
    char z = joiner( x, space ).front(); // error
}
Run Code Online (Sandbox Code Playgroud)

dmd带有错误的结尾编译:

 test.d(8): Error: cannot implicitly convert expression (joiner(x,space).front()) of type dchar to char
Run Code Online (Sandbox Code Playgroud)

更改char zdchar z确定错误消息,但我很感兴趣,为什么它出现在第一位.

为什么结果joiner(string[],string).front()是dchar而不是char?

(文档http://dlang.org/phobos/std_algorithm.html#joiner中没有任何内容)

d phobos dmd

7
推荐指数
1
解决办法
389
查看次数

如何在没有D运行时编译D应用程序?

我一直在努力想象这一个,并开始惹恼我.我理解D运行时库.它是什么,它做了什么.我也明白你可以在没有它的情况下编译D app.就像XoMB那样.好吧,XoMB定义了自己的运行时,但有些情况下你不需要编写自己的运行时,如果你不需要它.据我所知,即使用它的DigitalMars D编译器(dmd)在运行时的幕后做了很多事情,比如根据你的程序需要发出对某些东西的引用.而且,每个程序的东西.所以你必须自己定义.我决定尝试,试着弄清楚自己并且相当远.我的意思是让链接器吐出越来越少的错误.对于测试我只想编译一个完整的裸机应用程序,只是为了在没有运行时的情况下工作.或者尽可能少运行时.这是我有我的单一源文件.

module main;

void _main()
{
    int a = 2 + 3;
}
Run Code Online (Sandbox Code Playgroud)

我编译:dmd -c main.d -defaultlib =

然后链接:link main.obj

这是我得到的错误:OPTLINK:警告23:没有堆栈和OPTLINK:警告134:没有起始地址

你可以看到我试着chaingng main来_main来摆脱无起始地址错误,但是,无论如何,没有帮助.我需要做些什么来解决这两个最后的错误?如果我可以让它工作,我想我可以查找我需要实现什么来获得更多的功能.但是,如果有人愿意帮助我解决这个问题,那就太过分了!

d dmd druntime

7
推荐指数
1
解决办法
1362
查看次数

D开发过程

对于使用从github克隆并单独构建的包的D程序,建议的开发过程是什么?

通常与使用make,autotools,cmake等构建C/C++项目有关.

大多数其他构建规范都有一个安装目标.是否应该在构建中有一个安装目标,或者我们应该直接从构建它的位置链接库并添加寄存器包含在D_INCLUDE_PATH其中然后使用DFLAGS=-I<D_INCLUDE_PATH>

module packages d dmd libraries

7
推荐指数
1
解决办法
195
查看次数