我有一个只包含一行的ASCII文件。我想将整行加载到fileprivate func handleNotification(data: [AnyHashable : Any]) {
guard let topic = data["topic"] as? String else { return }
if data["receiver"] as? String == UserManager.shared.current(Profile.self)?.uuid && topic == "coupons" {
displayNotification(data: data)
}
}
fileprivate func displayNotification(data: [AnyHashable : Any]) {
if #available(iOS 10.0, *) {
let content = UNMutableNotificationContent()
content.title = data["notification_title"] as! String
content.body = data["notification_body"] as! String
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 1, repeats: false)
let request = UNNotificationRequest.init(identifier: data["topic"] as! String, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
} else {
if currentNotification != nil {
UIApplication.shared.cancelLocalNotification(currentNotification!)
}
let notification = UILocalNotification()
notification.fireDate = Date()
notification.category = data["topic"] as? String
notification.alertBody = data["notification_body"] as? String
if #available(iOS 8.2, *) {
notification.alertTitle = data["notification_title"] as? String
}
currentNotification = notification
UIApplication.shared.scheduleLocalNotification(currentNotification!)
}
}
对象中。在执行此操作时,我希望将整个char数组放入单个连续的内存块中。这样做的最佳方式是什么?
目前,我按如下方式阅读整个文件:
std::string
如果我按照以下方式进行操作,那么字符串也会放在一个内存块中吗?
std::ifstream t(fname);
std::string pstr;
t.seekg(0, std::ios::end);
pstr.reserve(t.tellg());
t.seekg(0, std::ios::beg);
pstr.assign(std::istreambuf_iterator<char>(t),
std::istreambuf_iterator<char>());
如果两种方式都能提供所需的功能,那么首选哪一种?
答案 0 :(得分:2)
如果我按照以下方式进行操作,那么字符串也会放在一个内存块中吗?
是的,两种方法都可以。
如果两种方式都能提供所需的功能,那么首选哪一种?
应首选第一个,以避免重复(重新)分配目标std::string
。使用std::back_inserter
会更加惯用。