Swift3.0 控制台输入输出
2017-02-24 11:40
351 查看
一个基本事实,scanf是在stdio.h里面的,这是一个标准的c函数。
这已经和objective-c没有什么关系了,其实objc里面也没有scanf这个函数。唯一不同的只是objc比swift更容易和c结合。
swift从诞生开始的形象就是“去c化”,objc一直沾染着c,而又离现代编程语言太远。
其实我从来没有在Cocoa的环境下用过这个函数。
Cocoa的定位(Swift和oc一样也是纯粹为Cocoa服务的)是让你写GUI,也就是图形用户界面。
上面说的都是语言层面的问题,我认为这个问题其实是不存在的。下面是解决方案
1、使用NSFileHandle的fileHandleWithStandardInput
这个是完全和objc一模一样的用法
2、写一个bridging header
其实在swift里面用c也不是那么的困难,你只需要一个.h
最后附上一段控制台输入的代码,用Swift3.0写的
let input = String(data: FileHandle.standardInput.availableData, encoding: String.Encoding.utf8)
if let str = input {
let index = str.index(str.endIndex, offsetBy: -1) //去掉最后一个换行符
print(str.substring(to: index))
}
这已经和objective-c没有什么关系了,其实objc里面也没有scanf这个函数。唯一不同的只是objc比swift更容易和c结合。
swift从诞生开始的形象就是“去c化”,objc一直沾染着c,而又离现代编程语言太远。
其实我从来没有在Cocoa的环境下用过这个函数。
Cocoa的定位(Swift和oc一样也是纯粹为Cocoa服务的)是让你写GUI,也就是图形用户界面。
上面说的都是语言层面的问题,我认为这个问题其实是不存在的。下面是解决方案
1、使用NSFileHandle的fileHandleWithStandardInput
这个是完全和objc一模一样的用法
2、写一个bridging header
其实在swift里面用c也不是那么的困难,你只需要一个.h
最后附上一段控制台输入的代码,用Swift3.0写的
let input = String(data: FileHandle.standardInput.availableData, encoding: String.Encoding.utf8)
if let str = input {
let index = str.index(str.endIndex, offsetBy: -1) //去掉最后一个换行符
print(str.substring(to: index))
}
相关文章推荐
- Swift 3.0 【清除 Xcode 8 控制台输出的冗余代码】
- 【iOS开发】swift 3.0 延长设置launch image启动页面图片显示时间
- Swift编程语言3.0----第一章 语言基础
- iOS开发--Swift 基于AFNetworking 3.0的网络请求封装
- swift 3.0 哈希sha1方法
- Swift3.0从入门到放弃(四)-基础最终篇
- swift3.0更新
- swift 3.0 -UINavigationController
- 一起聊聊 Swift 3.0
- Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数
- swift 3.0 闭包,项目使用例子,结合GCD
- swift 3.0 GCD使用
- Swift3.0 / swift2.3中dispatch_group的使用
- Swift3.0 功能二 (表情键盘与图文混排)
- iOS开发系列--Swift 3.0
- swift3.0 tableviewcell分割线显示不全解决方案
- Swift 3.0 下 Notifications 与 userInfo 的使用
- 十四 Swift3.0之 数组的其他操作
- swift3.0 获取当前的Version
- Swift3.0语言教程获取字符串编码与哈希地址