2012-07-09 45 views
0

我需要创建很多不同的文件,我想他们的名字是这样的:要创建许多不同的文件,但名称不同

"signal1.dat", "signal2.dat", "signal3.dat", ... , "signal100.dat" 

这是我迄今为止

std::stringstream ss; 
std::string out = "signal"; 
std::string format = ".dat"; 
std::string finalName; 
int TrkNxtSig = 1; 

... 
[code] 
... 


ss << out << TrkNxtSig << format; 
finalName = ss.str(); 
ofstream output(finalName); 
TrkNxtSig++; 

我得到这个错误

 error: no matching function for call to ‘std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(std::string&)’ 
/usr/include/c++/4.4/fstream:623: note: candidates are: std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>] 
/usr/include/c++/4.4/fstream:608: note:     std::basic_ofstream<_CharT, _Traits>::basic_ofstream() [with _CharT = char, _Traits = std::char_traits<char>] 
/usr/include/c++/4.4/iosfwd:84: note:     std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(const std::basic_ofstream<char, std::char_traits<char> >&) 

我不知道那是什么错误消息告诉我。哪里不对?

+0

可能的重复[为什么不std :: fstream类需要std :: string?](http://stackoverflow.com/questions/32332/why-dont-the-stdfstream-classes-take- a-stdstring) – 2012-07-09 15:47:01

+1

顺便说一句,如果你升级你的编译器,它应该开始工作。 – 2012-07-09 15:48:21

+1

标签存在,因此您不需要在标题中提供它们(即从标题中删除'[C++]')。实际标记功能更强大,因为它们允许索引和搜索 – 2012-07-09 15:56:50

回答

2

它告诉你,ofstream没有构造函数,它需要std::string作为参数。

改为使用ofstream output(finalName.c_str());

这已在C++ 11中修复。如果您使用的是gcc,请尝试通过-std=c++0x

相关问题