我想从整数值转换为字符串字符,如下所示:
0
至"a"
1
至"b"
等等直到
26
至"z"
有没有办法在没有大 case 语句的情况下在e中做到这一点?
注意:e
是强类型的,不可能对字符串值进行任何类型的算术运算。也没有任何char
类似的类型。
另一个节点:对于所有对我的问题投反对票的 C/C++ 能手,这并不像你想象的那么容易。
您可以定义一个新的枚举类型以对应于字母表,并使用枚举值由 int 值支持的事实将 int 列表转换为枚举列表或字符串。
考虑以下示例:
<'
type chars : [a, b, c, d, e, f, g];
extend sys {
run() is also {
var l : list of int[0..6];
var s: string = "";
gen l keeping {it.size() == 5};
print l;
for each in l { print it.as_a(chars); };
for each in l { s = append(s, it.as_a(chars)); };
print s;
};
};
'>
此示例的输出将是:
l =
0. 4
1. 0
2. 6
3. 4
4. 5
it.as_a(chars) = e
it.as_a(chars) = a
it.as_a(chars) = g
it.as_a(chars) = e
it.as_a(chars) = f
s = "eagef"
请注意,您可以为枚举中的元素分配自定义值。这样,您可以将标准 ASCII 值分配给枚举元素。
type chars : [a=10, b=11, c=12, d=13, e=14, f=15, g=16];
你可以这样做:
{0c"a"+my_num}.as_a(string)
0c"a"
表示字母“a”的 ASCII 值。将as_a()
数字列表(实际上是字节)转换为字符串会创建一个字符串,其中每个字符都具有相应列表元素的 ASCII 值。