我有想要输出到名为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 ++的解决方案吗?谢谢!
答案 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());