C ++中编号的文件名?

时间:2015-02-04 01:47:27

标签: c++ compiler-errors g++ cout

我有想要输出到名为matrix_1.txt,matrix_2.txt等文件的数据。

以下代码适用于visual studio:

//get ready to write to file
std::ofstream myfile;

//define filename
std::ostringstream oss;
oss << "output_matrix_" << sim_index << ".txt";
myfile.std::ofstream::open (oss.str());

//write to file
myfile<<"stuff\n";

//close the file
myfile.close();

但是当我使用g ++运行时,我收到以下错误消息:

laplace_calc.cpp:240: error: no matching function for call to 'std::basic_ofstream<char, std::ch                ar_traits<char> >::open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/fstream:696: note: candidat                es are: void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [w                ith _CharT = char, _Traits = std::char_traits<char>]

有人可以提供适用于g ++的解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您需要使用-std=c++0x开关为GCC启用C ++ 11支持。

或者,使用oss.str().c_str()获取指向以null结尾的字符串的指针,并将其传递给open(),因为在C ++ 11之前支持该重载。

如果您查看this page,您会发现open()的过载std::string仅在C ++ 11中实现。

此外,正如评论中所述,您只需要myfile.open(oss.str()),或只是声明myfile并同时打开该文件:

std::ofstream myfile(oss.str());