前の日 / 次の日 / 最新 / 2009-10

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2009-10-27 Tue

文字列のサイズの拡大に注意する [D言語]

D言語の配列は要素の型の初期値で初期化される。

int[10] a;//各要素はint.initで初期化されている。
writeln(a)//0 0 0 0 0 0 0 0 0 0

動的配列の場合も同様に、
拡大した領域を初期化する。

int[] a = [1,2];
a.length = 10;//[2 .. 10]はint.initで初期化されている。
writeln(a)//1 2 0 0 0 0 0 0 0 0

char wchar dchar の初期値は、
UTF-8 UTF-16 UTF-32 として不正な文字。

import std.utf;

char[] s;
s.length = 10;
s.validate; //Invalid UTF sequence: 255

そのため、文字列の長さを大きくした場合、
この文字列は不正な文字含むことのなる。