我有std::string
并希望将其作为文件名传递给fstream,如
std::string fname = "/home/mahmood/filter" + boost::lexical_cast<std::string>(b) + ".txt";
std::fstream fout (fname, std::fstream::app | std::fstream::out);
但是第二行出错了
error: no matching function for call to ‘std::basic_fstream<char, std::char_traits<char> >::basic_fstream(std::string&,
似乎无法将string
转换为char *
。另外投射不起作用
答案 0 :(得分:9)
将fname.c_str()
用作:
std::fstream fout (fname.c_str(), std::fstream::app | std::fstream::out);
.c_str()
返回const char*
。在C ++ 03中,您必须传递const char*
。
在C ++ 11中,您can pass std::string
但似乎您的编译器不支持它。