Tôi cần phải ghi vào một loạt tệp cùng một lúc, vì vậy tôi quyết định sử dụng map <string, ofstream>
.Xử lý bản đồ tệp trong C++
map<string, ofstream> MyFileMap;
Tôi lấy một vector<string> FileInd
, trong đó bao gồm, nói "a" "b" "c"
, và cố gắng để mở tập tin của tôi với:
for (vector<string>::iterator it = FileInd.begin(); iter != FileInd.end(); ++it){
...
MyFileMap[*it].open("/myhomefolder/"+(*it)+".");
}
tôi nhận được lỗi
request for member 'open' in ..... , which is of non-class type 'std::ofstream*'
Tôi đã cố gắng để chuyển sang
map<string, ofstream*> MyFileMap;
Nhưng nó cũng không hoạt động.
Có ai giúp được không?
Cảm ơn.
Làm rõ:
Tôi đã thử cả hai
map<string, ofstream> MyFileMap;
map<string, ofstream*> MyFileMap;
với cả
.open
->open
cả 4 biến thể đều không hoạt động.
Solution (gợi ý trong mã của Rob dưới đây):
Về cơ bản, tôi quên mất "mới", các công việc sau cho tôi:
map<string, ofstream*> MyFileMap;
MyFileMap[*it] = new ofstream("/myhomefolder/"+(*it)+".");
Bạn muốn '-> open' , không phải '.open'. Toán tử '[] trên một vectơ trả về một cái gì đó hoạt động giống như một con trỏ, không phải là một tham chiếu. –
@DavidSchwartz Không theo http://www.cplusplus.com/reference/stl/map/operator%5B%5D/ – Borealid
Xin lỗi, tôi có nghĩa là trên một 'bản đồ', không phải trên' vectơ'. –