如何在Dart中使用char类型? (打印字母)

时间:2014-01-17 11:00:45

标签: c dart

我试图通过转换我学校为C编程提供的练习来学习Dart language

我们的C池中的第一个练习是编写一个以小写字母打印字母的函数print_alphabet();禁止直接打印字母

在POSIX C中,直接的解决方案是:

#include <unistd.h>

void    print_alphabet(void)
{
    char    c;

    c = 'a';
    while (c <= 'z')
    {
        write(STDOUT_FILENO, &c, 1);
        c++;
    }
}

int     main(void)
{
    print_alphabet();
    return (0);
}

但是,据我所知,当前版本的Dart(1.1.1)没有简单的方法来处理字符。我想出的最远的(对于我的第一个版本)是:

void  print_alphabet()
{
  var c = "a".codeUnits.first;
  var i = 0;

  while (++i <= 26)
  {
    print(c.toString());
    c++;
  }
}

void main() {
  print_alphabet();
}

打印每个字符的ASCII值,每行一个,作为字符串(“97”......“122”)。不是我想要的......

我正在努力寻找一种正确的方法。但是像C中那样缺少char类型给我带来了一些困难,作为一个初学者!

2 个答案:

答案 0 :(得分:11)

Dart没有字符类型。

要将代码点转换为字符串,请使用String构造函数String.fromCharCode

int c = "a".codeUnitAt(0);
int end = "z".codeUnitAt(0);
while (c <= end) {
  print(new String.fromCharCode(c));
  c++;
}

对于像这样的简单内容,如果你不介意换行,我会使用“print”而不是“stdout”。

还有:

int char_a = 'a'.codeUnitAt(0);
print(new String.fromCharCodes(new Iterable.generate(26, (x) => char_a + x)));

答案 1 :(得分:0)

在我最后确定我的帖子并重新描述我的问题标题时,由于this question about stdout,我不再咆哮错误的树。

似乎编写字符的一种正确方法是使用stdout.writeCharCode库中的dart:io

import 'dart:io';

void  ft_print_alphabet()
{
  var c = "a".codeUnits.first;

  while (c <= "z".codeUnits.first)
    stdout.writeCharCode(c++);
}

void main() {
  ft_print_alphabet();
}

我仍然不知道如何操纵字符类型,但至少我可以打印它们。