如何在斯威夫特操场采取STDIN

我知道要在STDIN和STDOUT中编程,我们需要在Xcode中创build一个命令行项目。 但是我如何在操场上进行标准input。

每当我尝试在操场上运行这样的代码

var input = readLine()! 

我总是得到这个错误

执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_l386_INVOP,子代码= 0x0)

是否可以在运动场玩STDIN?

UPDATE

我知道这个错误是因为没有 inputvariables,但想知道如何克服这个零值。

尝试使用可选链接 :

 if let input = readLine() { print("Input: \(input)") } else { print("No input.") } 

为了从命令行获得input,像Console.ReadLine … Chalkers有一个解决scheme如下。

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

请进一步询问是否不起作用Vinod。

针对SWIFT 3的固定解决scheme

为了使它工作,创build一个新的命令行工具项目。

进入“文件” – >“新build” – >“项目” – >“macOS” – >“命令行工具”。

 import Foundation print("Hello, World!") func solveMefirst(firstNo: Int , secondNo: Int) -> Int { return firstNo + secondNo } func input() -> String { let keyboard = FileHandle.standardInput let inputData = keyboard.availableData return NSString(data: inputData, encoding:String.Encoding.utf8.rawValue) as! String } let num1 = readLine() let num2 = readLine() var IntNum1 = Int(num1!) var IntNum2 = Int(num2!) print("Addition of numbers is : \(solveMefirst(firstNo: IntNum1!, secondNo: IntNum2!))") 

并使用CMD + R运行该项目

新build>项目> MacOs>命令行工具

那么你可以申请:

让value1:string?

 value1 = readLine() print(value ?? "") 

“”为默认值

游乐场不能读取来自表扬线的input。

您可以使用自定义的“readLine()”函数和全局inputvariables,input数组中的每个元素都呈现一行:

 import Foundation var currentLine = 0 let input = ["5", "5 6 3"] func readLine() -> String? { if currentLine < input.endIndex { let line = input[currentLine] currentLine += 1 return line } else { return nil } } let firstLine = readLine() // 5 let secondLine = readLine() // 5 6 3 let thirdLine = readLine() // nil