C++ 中的编号文件名?

Numbered filenames in C++?

我有数据要输出到名为 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++ 的解决方案吗?谢谢!

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

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

如果您查看 this page,您会发现采用 std::stringopen() 重载仅在 C++11 中实现。

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

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