我得到以下函數在將字符串轉換爲wstring時隨機崩潰。它用於解析HTTP標頭(http://www.codeproject.com/Articles/66625/A-Fully-Featured-Windows-HTTP-Wrapper-in-C)並始終正常工作,但最近更改服務器時它會隨機停止工作。 (此代碼來自codeproject項目附帶的類)將字符串轉換爲wstring時崩潰
inline bool ParseRegExpW(const wstring ®Exp, bool caseSensitive, int groupCount, const wstring &source, vector<wstring> &result, bool allowDuplicate = false)
{
const string regEXP = string(regExp.begin(), regExp.end());
const string Source = string(source.begin(), source.end());
vector<string> Result;
if (result.size() != 0){
for (int i = 0; i < result.size(); i++) {
Result[i] = string(result[i].begin(), result[i].end());
}
}
bool res = ParseRegExp(regEXP, caseSensitive, groupCount, Source, Result, allowDuplicate);
if (Result.size() != 0){
for (int i = 0; i < Result.size(); i++) {
printf("Result: %i->%s L: %i : R %i r %i\n", i, Result[i].c_str(), Result[i].length(), Result.size(), result.size());//Result[i] contains what it should contain
if (i < Result.size()){
printf("Converting...\n");
result[i] = wstring(Result[i].begin(), Result[i].end());
printf("Will crash before getting there..\n");
}
}
}
return res;
}
爲什麼會發生這種情況?這對我來說很奇怪,以至於在過去的幾個月裏它工作的很好,當我更換服務器時停止工作。
'operator []'does ** not **插入任何新元素到'std :: vector'中。所以如果'result.size()!= 0'這個也會崩潰。 –
'vector結果;'創建一個零大小的向量。添加內容時,應該使用'Result.push_back()'而不是'Result [i]'。 –
另外,同時具有'結果'和'結果'只是一個錯字! –