0

我想从整数值转换为字符串字符,如下所示:

0"a"

1"b"

等等直到

26"z"

有没有办法在没有大 case 语句的情况下在e中做到这一点?

注意:e是强类型的,不可能对字符串值进行任何类型的算术运算。也没有任何char类似的类型。

另一个节点:对于所有对我的问题投反对票的 C/C++ 能手,这并不像你想象的那么容易。

4

2 回答 2

1

您可以定义一个新的枚举类型以对应于字母表,并使用枚举值由 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];
于 2014-11-25T09:21:04.143 回答
1

你可以这样做:

{0c"a"+my_num}.as_a(string)

0c"a"表示字母“a”的 ASCII 值。将as_a()数字列表(实际上是字节)转换为字符串会创建一个字符串,其中每个字符都具有相应列表元素的 ASCII 值。

于 2014-11-28T08:10:03.793 回答