我需要一些有关此排序功能的帮助。此功能的目的是创建一个指向char的指针数组,以使用户可以用一些单词填充它,并按字母顺序将其取回。这是代码的一部分:
public func clearCookies(completion: @escaping (() -> Swift.Void)) {
// First remove any previous cookies set in the NSHTTP cookie storage.
HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)
// Second remove any previous cookies set in the WKHTTP cookie storage.
let typeCookiesToBeRemoved: Set<String> = [WKWebsiteDataTypeCookies]
// Only fetch the records in the storage with a cookie type.
WKWebsiteDataStore.default().fetchDataRecords(ofTypes: typeCookiesToBeRemoved) { records in
let dispatchGroup = DispatchGroup()
records.forEach { record in
dispatchGroup.enter()
WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {
dispatchGroup.leave()
})
}
dispatchGroup.notify(queue: DispatchQueue.main) {
print("All cookies removed.")
completion()
}
}
}
当我尝试运行它时,出现此错误,但我不明白为什么。 这是程序的输出:
字符串数:3 插入0元素:abc 从主读取失败 :输入/输出错误 RUN FAILED(退出值1,总时间:7秒)
答案 0 :(得分:0)
char *Vector[NumString]
定义为char指针数组。
有关此的更多信息:
https://www.codeproject.com/Articles/7042/How-to-interpret-complex-C-C-declarations
由于char*
元素均未初始化,因此您的程序在尝试cin
时进行了非法的内存访问,并被关闭/崩溃。
为避免这种情况,您可以改用std::string
来为您分配内存。
编辑:
如果必须使用char数组,则可以执行以下操作:
您可以像这样char
预先分配char Vector[numString][noteLength]
数组长度。然后使用std::cin >> std::setw(noteLength) >> Vector[i]
。
您还可以使用先前的char *Vector[NumString]
定义并调用Vector[i] = new char[noteLength]
动态分配指针。完成操作后,别忘了致电delete Vector[i]
!
您还必须#include <iomanip>
才能使用std::setw