在這段代碼中,在while循環的每次迭代中,從文件中讀取一行。該生產線是一樣的東西:這段C++代碼有什麼問題?
13,4636137,29464742,29464746,995560164
在大膽指定的每個號碼,該號碼在一個std一個關鍵的存在::地圖在檢查for循環。如果密鑰存在,則該值將附加到該字符串。然後將字符串寫入文件。
如果其中一個鍵不存在於映射中,那麼對於該行,什麼都不應寫入該文件。 (bool is_points_in_range)
但實際上,在最後一點(for循環之外)不在鍵列表中的情況下,程序邏輯運行良好。
爲什麼布爾運算符在for循環中沒有變化?
vector<string> res;
ifstream infile;
map<string, string> m;
while(infile.getline(buffer, LINE_BUFFER_LEN))
{
line=string(buffer);
res = SplitBySep(line, ",");
bool is_points_in_range=true;
string geo_file_line;
for (int i=2;i<res.size()-1;i++){
if (m.find(res[i]) == m.end()) {
is_points_in_range=false;
break;
} else {
geo_file_line= geo_file_line.append(m[res[i]]).append("^");
}
}
if (m.find(res[res.size()-1]) == m.end()) {
is_points_in_range=false;
} else {
geo_file_line= geo_file_line.append(m[res[res.size()-1]]).append("\n");
}
if (is_points_in_range){
fprintf(fp_geo, "%s",geo_file_line.c_str());
}
}
您是否嘗試過調試該程序?什麼是「res」?你正在從infile中讀取,但是在你的代碼中沒有任何地方處理'buffer'或'line',所以你如何期待它的工作? – Excelcius
我編輯了代碼,我從文件中讀取,然後用一個我知道很好的函數標記它。 – user2949310
順便說一句,它很難讀取你的代碼 – Quest