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

Вы не присваиваете ничего переменной 'year'. Это не главная проблема, но это одна из проблем. Вы хотели установить 'year = i;' в цикле for? – maditya

+0

Кроме того, какая строка является ошибкой? – maditya

ответ

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++){ 
    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

Смежные вопросы