2

重複の可能性:
std::string を const char* または char* に変換する

があり、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);

しかし、2行目でエラーが発生します

error: no matching function for call to ‘std::basic_fstream<char, std::char_traits<char>   >::basic_fstream(std::string&, 

に変換できないstringようchar *です。キャスティングもうまくいかない

4

1 に答える 1

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 ではパスでき std::stringますが、コンパイラがサポートしていないようです。

于 2012-11-11T10:33:12.977 に答える