Как читать консольный ввод /stdin в Dart?
Как читать консольный ввод из stdin
в Dart?
Есть ли scanf
в Dart?
Ответы
Ответ 1
Метод readLineSync() в stdin позволяет захватывать строку из консоли:
import 'dart:io';
main() {
print('1 + 1 = ...');
var line = stdin.readLineSync(encoding: Encoding.getByName('utf-8'));
print(line.trim() == '2' ? 'Yup!' : 'Nope :(');
}
Ответ 2
Следующее должно быть самым современным кодом дротика для чтения ввода из стандартного ввода.
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);
}
Ответ 3
С классами дротиков M3, такими как StringInputStream, заменяются 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. */);
}
Ответ 4
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().