Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将字符串与整数相乘返回整数?_String_D - Fatal编程技术网

String 将字符串与整数相乘返回整数?

String 将字符串与整数相乘返回整数?,string,d,String,D,所以我试着用D做一个星号金字塔。 首先,我注意到连接似乎是不可能的。写出类似于writeln(“foo”+“bar”)的内容会导致语法错误。因此,我尝试像python中那样对字符串进行乘法,这不适用于双引号字符串,但对于单引号字符串,会发生一些奇怪的事情 如果你输入这个 import std.stdio; void main() { foreach (i; 0 .. 10) { writeln(i*'0'); } } 它将返回一组整数。 有人能解释为什么

所以我试着用D做一个星号金字塔。 首先,我注意到连接似乎是不可能的。写出类似于
writeln(“foo”+“bar”)
的内容会导致语法错误。因此,我尝试像python中那样对字符串进行乘法,这不适用于双引号字符串,但对于单引号字符串,会发生一些奇怪的事情

如果你输入这个

import std.stdio;
void main()
{
    foreach (i; 0 .. 10)
    {
        writeln(i*'0');
    }
}
它将返回一组整数。 有人能解释为什么会发生这种情况吗? 让我知道如何连接字符串也会很有帮助


谢谢

0不是字符串,而是使用ASCII编码的字符。该数字与编码的整数id相乘。例如,ASCII的“A”编码为65

import std.stdio;
int main()
{
        writeln( cast(int)'A' );
        writeln( 10 * 'A' );
        return 0;
}
此程序将打印65和650,因为在这两种情况下字符都将转换为整数


要解决最初的连接问题,可以使用“~”运算符连接两个数组,或使用“array1~=array2”在一条语句中将array2追加到array1上。

想到的第一个解决方案:

char[5] arr3 = 's';
writeln(arr3);
两种备选方案是标准阵列复制和标准范围重复:

import std.array;
import std.stdio;

void main() {
    auto arr = replicate(['s'], 5); // lazy version: http://dlang.org/phobos/std_range.html#repeat
    // or
    auto arr2 = ['s'].replicate(5);
    writeln(arr);
    writeln(arr2);
}

谢谢!你认为你也可以帮我解决连接问题吗?
+
不应该被用作连接运算符。曾经用任何语言。D中的串联运算符是+的~isntead。所以试着写下它(foo)~“bar”)