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::string
的 open()
重载仅在 C++11 中实现。
另外,如评论中所述,您只需要myfile.open(oss.str())
,或者只需声明myfile
并同时打开文件:
std::ofstream myfile(oss.str());
我有数据要输出到名为 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::string
的 open()
重载仅在 C++11 中实现。
另外,如评论中所述,您只需要myfile.open(oss.str())
,或者只需声明myfile
并同时打开文件:
std::ofstream myfile(oss.str());