2012-07-09 95 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

相關問題