首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Dart中读取控制台输入/标准输入?

如何在Dart中读取控制台输入/标准输入?
EN

Stack Overflow用户
提问于 2012-06-20 23:19:12
回答 8查看 39.2K关注 0票数 38

如何在Dart中读取来自stdin的控制台输入?

Dart中有scanf吗?

EN

Stack Overflow用户

发布于 2021-04-06 17:03:32

从Dart 2.12开始,启用了空安全,stdin.readLineSync()现在返回String?而不是String

这显然让很多人感到困惑。我强烈建议阅读https://dart.dev/null-safety/understanding-null-safety来理解空安全的含义。

特别是对于stdin.readLineSync(),您可以通过首先检查null来解决这个问题,对于局部变量,它会自动将String?提升为String。下面是一些示例:

代码语言:javascript
运行
复制
// Read a line and try to parse it as an integer.
String? line = stdin.readLineSync();
if (line != null) {
  int? num = int.tryParse(line); // No more error about `String?`.
  if (num != null) {
    // Do something with `num`...
  }
}
代码语言:javascript
运行
复制
// Read lines from `stdin` until EOF is reached, storing them in a `List<String>`.
var lines = <String>[];
while (true) {
  var line = stdin.readLineSync();
  if (line == null) {
    break;
  }
  lines.add(line); // No more error about `String?`.
}
代码语言:javascript
运行
复制
// Read a line.  If EOF is reached, treat it as an empty string.
String line = stdin.readLineSync() ?? '';

请注意,您不应该盲目地使用 do stdin.readLineSync()!readLineSync返回一个String?是有原因的:当没有更多的输入时,它返回null。使用null assertion operator (!)是在请求运行时异常。

票数 2
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11122732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档