web-dev-qa-db-ja.com

Dartでコンソール入力/標準入力を読み取るにはどうすればよいですか?

Dartのstdinからコンソール入力を読み取るにはどうすればよいですか?

Dartにscanfはありますか?

23
Seth Ladd

readLineSync()メソッドstdinを使用すると、コンソールから文字列をキャプチャできます。

import 'Dart:io';

main() {
    print('1 + 1 = ...');
    var line = stdin.readLineSync(encoding: Encoding.getByName('utf-8'));
    print(line.trim() == '2' ? 'Yup!' : 'Nope :(');
}
32
Renaud Denis

以下は、stdinからの入力を読み取るための最新のDartコードである必要があります。

import 'Dart:async';
import 'Dart:io';
import 'Dart:convert';

void main() {
  readLine().listen(processLine);
}

Stream<String> readLine() => stdin
    .transform(utf8.decoder)
    .transform(const LineSplitter());

void processLine(String line) {
  print(line);
}
9
nobody

StringInputStreamのようなM3Dartクラスが Stream に置き換えられたら、次のことを試してください。

import 'Dart:io';
import 'Dart:async';

void main() {
  print("Please, enter a line \n");
  Stream cmdLine = stdin
      .transform(new StringDecoder())
      .transform(new LineTransformer());

  StreamSubscription cmdSubscription = cmdLine.listen(
    (line) => print('Entered line: $line '),
    onDone: () => print(' finished'),
    onError: (e) => /* Error on input. */);


}
3
joan
import 'Dart:io';

void main(){
  stdout.write("Enter your name : ");
  var name = stdin.readLineSync();
  stdout.write(name);
}

出力

Enter your name : Jay
Jay

デフォルトでは、readLineSync()は入力を文字列として受け取ります。ただし、整数入力が必要な場合は、parse()またはtryparse()を使用する必要があります。

2
Jay Tillu