Input from the keyboard in command line application Input from the keyboard in command line application swift swift

Input from the keyboard in command line application


The correct way to do this is to use readLine, from the Swift Standard Library.

Example:

let response = readLine()

Will give you an Optional value containing the entered text.


I managed to figure it out without dropping down in to C:

My solution is as follows:

func input() -> String {    var keyboard = NSFileHandle.fileHandleWithStandardInput()    var inputData = keyboard.availableData    return NSString(data: inputData, encoding:NSUTF8StringEncoding)!}

More recent versions of Xcode need an explicit typecast (works in Xcode 6.4):

func input() -> String {    var keyboard = NSFileHandle.fileHandleWithStandardInput()    var inputData = keyboard.availableData    return NSString(data: inputData, encoding:NSUTF8StringEncoding)! as String}


It's actually not that easy, you have to interact with the C API. There is no alternative to scanf. I've build a little example:

main.swift

import Foundationvar output: CInt = 0getInput(&output)println(output)


UserInput.c

#include <stdio.h>void getInput(int *output) {    scanf("%i", output);}


cliinput-Bridging-Header.h

void getInput(int *output);