编辑(编辑历史中的原始帖子)
我能用这个例子重现我的问题:
GCMService.sharedInstance().connectWithHandler() { error in if(error != nil) { print(error) } }
在返回0; 之前添加断点。现在,检查myVec中的字符串并克隆。 他们的能力不一样!
答案 0 :(得分:3)
复制std::string
时,请求不要将容量复制为相同。
$21.3.1.2/2 basic_string constructors and assignment operators [string.cons]:
Table 49 — basic_string(const basic_string&) effects Element Value data() points at the first element of an allocated copy of the array whose first element is pointed at by str.data() size() str.size() capacity() a value at least as large as size()
唯一的保证是字符串的容量至少与复制后的大小一样大。
这意味着你必须自己做这件事:
for (int i = myVec.size(); i--;) {
myVec[i].reserve(myVec[i].size() + MAX_BUFFER);
clone.push_back(myVec[i]);
clone.back().reserve(myVec[i].capacity());
}
答案 1 :(得分:0)
是的,string类有一个成员函数 String resize member funtion..
答案 2 :(得分:0)
myString.resize(l)
不会更改字符串的容量,除非l
大于字符串的大小。只需致电myString.capacity()
,亲眼看看。