2013-04-01 193 views
0

我想組合字符串來輸入文本文件。我的代碼如下所示:組合字符串

`#include <iostream> 
#include <sstream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main(){ 
int year; 
string line; 
string fileName; 

for (int i=1880; i<2012; i++){ 
    stringstream ss; 
    ss << year; 


fileName = string("yob") + string(year) + string(".txt"); 

ifstream ifile(fileName.c_str()); 
getline(ifile,line); 
cout << line << endl; 
ifile.close(); 
} 

}` 

的文本文件看起來像「yob1880.txt」 < - 這是第一個文本文件,它會一路「yob2011.txt」。我想逐個輸入文本文件,但是將這三個字符串類型組合起來不起作用,它給了我一個錯誤,說明從int到const char *的無效轉換。

對這個問題有什麼想法?謝謝!

+0

你沒有分配任何東西給變量'年'。這不是主要問題,但這是問題之一。你是否想在for循環中設置'year = i;'? – maditya

+0

另外,哪一行是錯誤? – maditya

回答

0

你應該從stringstream中獲得它。你幾乎在那裏,但這是你應該做的,而不是:

#include <iostream> 
#include <sstream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main(){ 
int year; 
string line; 
string fileName; 

for (int i=1880; i<2012; i++){ 
    year = i; //I'm assuming this is what you meant to use "year" for 
    stringstream ss; 
    ss << year; //add int to stringstream 

string yearString = ss.str(); //get string from stringstream 

fileName = string("yob") + yearString + string(".txt"); 

ifstream ifile(fileName.c_str()); 
getline(ifile,line); 
cout << line << endl; 
ifile.close(); 
} 

} 
+0

非常感謝!這就說得通了 – user22