1
我必須映射容器:與更新地圖有問題
map<string, char *> mOServs;
map<LPWCH, int> mymap;
我做了sqlite3的查詢,並嘗試的結果更新這兩個地圖:
sprintf_s(query,1024,"SELECT oservname FROM OServs;");
rc = sqlite3_get_table(db, query, &results, &nrow, &ncol, &zErrMsg);
cout << "query: " << query << endl;
if (rc != SQLITE_OK) {
fprintf(stderr, "Error Selecting oserv name: %s\n", zErrMsg);
sqlite3_free_table(results);
sqlite3_close(db);
return -1;
}
int X = 0;
WCHAR somevar[1024];
while(X < nrow)
{
mbstowcs(somevar, results[X+1], 1024);
wcstombs(output, somevar, 1024);
mOServs[output] = "offline";
mymap[somevar] = X;
X++;
}
不知怎的mOServs似乎填充正確,但是使用mymap,它只包含循環結尾處查詢的最後一條記錄。難道我做錯了什麼?
我試圖將所有的查詢結果存儲在一張地圖中,這樣我就可以執行一個mymap.find(LPWCH)來查找表中是否有記錄。
檢查每個循環迭代的輸出值。只要它一樣,地圖將與相同的密鑰相關聯。 – Mahesh
'LPWCH'只是一個指針,並且您一次又一次地使用相同的指針,所以地圖中只有一個條目。 –