Types 将int值赋给char 在学习C++和D时,我试图通过测试两种语言中的一些代码来比较易用性。 P> >在C++中,我有类似的东西(没有显示完整的C++代码,只是演示):

Types 将int值赋给char 在学习C++和D时,我试图通过测试两种语言中的一些代码来比较易用性。 P> >在C++中,我有类似的东西(没有显示完整的C++代码,只是演示):,types,d,Types,D,你可以从D中的字符数组中添加和减除,就像C++中的样本一样,例如: import std.stdio; char[] str; void main(string[] args) { for(int i=0; i<1000; i++) { str ~= cast(char)( i % (0x7F - '0') + '0') ; } writeln(str); } 导入标准stdio; char[]str; void main(字符串[]a

你可以从D中的字符数组中添加和减除,就像C++中的样本一样,例如:

import std.stdio;

char[] str;

void main(string[] args)
{
    for(int i=0; i<1000; i++)
    {
        str ~= cast(char)( i % (0x7F - '0') + '0') ;
    }
    writeln(str);
}
导入标准stdio;
char[]str;
void main(字符串[]args)
{
对于(int i=0;i更惯用的D代码:

char[]source=“some10char”.dup;//或cast(char[])“some10char”;
char[]destination;/=new char[source.length];
foreach(i;0..1000)
{
来源[$-1]=cast(char)('0'+i%(126-'0'));
destination=source.dup;//dup每次都会分配
//目标[]=源[];//正在复制,但目标必须与源具有相同的长度
}

顺便说一句,如果我尝试复制
dst=src,谢谢@Nt
这不会在循环中工作,因为我尝试使用
char[]
as field..但是
dst=src.dup
会…因此
~=
实际上正在执行
.dup
?不~=运算符用于在目标数组中串联。对于每次迭代,都会附加一个字符。我猜
x[]=y[]
会更快,但不如
x=y.dup
那么安全,而且在所有情况下都没有必要使用
免费
?@RajFelix这很奇怪。因为@Nestedtype建议使用
~
,而它在你的问题上下文中没有任何意义。@LoneXcoder比每次调用
dup
新数组都要快得多。(和
~=
.capacity
为0时相同。)是的,它刚刚起作用了。
~=/code>作为一名黑客,我现在可以理解
.dup
是一种正确的方式,我只是认为拿回奖杯是不礼貌的(:你会怎么做?顺便问一下,如果目的地字符[]的长度未知,当
dst[]=src[]
在编译时,由于dst[]在复制之前从未初始化过,因此它给出了一个超出范围的赋值或其他内容……对吗?
char[] src = "some10char".dup;
char[] dst;

for (int i=0; i<1000; i++)
{   
    if (i<15) 
        src[src.length-1] = cast(char)(i+15);
    else
        src[src.length-1] = cast(char)(i);

    dst = src.dup // testing also dst = src;
}
import std.stdio;

char[] str;

void main(string[] args)
{
    for(int i=0; i<1000; i++)
    {
        str ~= cast(char)( i % (0x7F - '0') + '0') ;
    }
    writeln(str);
}