我试图通过转换我学校为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
类型给我带来了一些困难,作为一个初学者!
答案 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();
}
我仍然不知道如何操纵字符类型,但至少我可以打印它们。