我需要同時寫入一堆文件,所以我決定使用map <string, ofstream>
。在C++中處理文件的地圖
map<string, ofstream> MyFileMap;
我採取vector<string> FileInd
,其中包括,說"a" "b" "c"
,並嘗試打開我的文件:
for (vector<string>::iterator it = FileInd.begin(); iter != FileInd.end(); ++it){
...
MyFileMap[*it].open("/myhomefolder/"+(*it)+".");
}
我得到的錯誤
request for member 'open' in ..... , which is of non-class type 'std::ofstream*'
我試着切換到
map<string, ofstream*> MyFileMap;
但它也沒有工作。
任何人都可以幫忙嗎?
謝謝。
澄清:
我都試過
map<string, ofstream> MyFileMap;
map<string, ofstream*> MyFileMap;
既
.open
->open
4種變體都不起作用。
解決方案(以下Rob的代碼提示):
基本上,我忘了 「新」,以下爲我的作品:
map<string, ofstream*> MyFileMap;
MyFileMap[*it] = new ofstream("/myhomefolder/"+(*it)+".");
你想' - > open' ,而不是'.open'。 vector上的'operator []'返回的東西像一個指針,而不是一個引用。 – 2012-02-04 05:59:00
@DavidSchwartz不按照http://www.cplusplus.com/reference/stl/map/operator%5B%5D/ – Borealid 2012-02-04 06:10:12
對不起,我的意思是一個'map',而不是'vector'。 – 2012-02-04 06:18:11