试图将字符串传递给std :: ifstream作为参数
问题描述:
我试图使用从矢量检索到的字符串将文件名传递给ifstream以便打开。试图将字符串传递给std :: ifstream作为参数
vector<string> files;
//Populate vector
std::ifstream ifile(files[0] ,std::ios::binary);
在编译时这将返回:
错误:没有匹配函数调用“的std :: basic_ifstream> :: basic_ifstream(性病:: basic_string的,性病::分配器> &,常量的std :: _Ios_Openmode &)*
如果我尝试转换文件[0]为const char *第一
vector<string> files;
std::string l = files[0];
const char *p;
p = l.c_str();
std::ifstream ifile(p ,std::ios::binary);
编译器回报:
错误:'l'未在此范围内声明
我在这做错了什么?这是基本的,我敢肯定,这很明显。
答
试试这个:
std::ifstream ifile(files[0].c_str(), std::ios::binary);
我不重现你的第二个问题(剪切和粘贴代码,并添加什么是明显缺失的)。顺便说一句,你也可以使用'file [0] .c_str()'而不是p。 – AProgrammer 2011-02-24 13:52:43