2013-04-01 151 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