У меня есть текстовый файл, содержащий несколько слов, по одному в строке.Мне нужно прочитать этот файл и поместить каждое слово в список, тогда пользователь сможет изменить этот список после завершения редактирования, программа запишет измененный список в новый файл.
Так как это объект, ориентированный на c ++У меня будет два класса, один для чтения / записи в файл, а другой для редактирования / связывания со списком и пользователем.
с учетом этого подхода, вот моя функция чтения из первого класса:
bool FileMgr::readToList(list<string> &l)
{
if(!input.is_open())
return false;
string line;
while(!input.eof())
{
getline(input, line);
l.push_back(line);
}
return true;
}
имейте в виду: ввод открывается в конструкторе.вопросы: есть ли менее излишний способ получить эту чертову строку из istream и вернуть ее обратно в l?(без «строки» между).кроме вопросов, эта функция, кажется, работает правильно.
теперь функция вывода:
bool FileMgr::writeFromList(list<string>::iterator begin, list<string>::iterator end)
{
ofstream output;
output.open("output.txt");
while(begin != end)
{
output << *begin << "\n";
begin++;
}
output.close();
return true;
}
это часть моей основной:
FileMgr file;
list<string> words;
file.readToList(words);
cout << words.front() << words.back();
list<string>::iterator begin = words.begin();
list<string>::iterator end = words.end();
file.writeFromList(begin, end);
спасибо запомогите, обе функции теперь работают.Что касается стиля, это хороший способ реализовать эти две функции?также часть getline (input, line), которая мне действительно не нравится, у кого-нибудь есть идея получше?