как я могу сделать функцию, объявленную как строку, конец строки

У меня есть функция, которая читает из текстового файла и выводит весь текстовый файл.
Похоже на это;

string FileInteraction :: read() const
{
ifstream file;
string output;
string fileName;
string line;
string empty = "";fileName = getFilename();

file.open(fileName.c_str());

if(file.good())
{
while(!file.eof())
{
getline(file, line);
output = output + line ;
}

file.close();
return output;
}
else
return empty;

};

Я называю эту функцию вот так;

cout << FI.read(); //PS I cant change the way it's called so I can't simply put an endl here

если я использую
вернуть вывод + «\ n»

я получаю это как вывод

-- Write + Read --
This is the first line. It should disappear by the end of the program.

-- Write + Read --
This is another line. It should remain after the append call.
This call has two lines.

Я не хочу, чтобы это расстояние между строками было там.

Поэтому после вызова функции мне нужно закончить строку.
Как я могу сделать это в функции?

PS. Также, если есть лучший способ вывести все в текстовом файле, чем то, как я это сделал, я был бы признателен за любые предложения.

0

Решение

Просто поменяй

return output;

в

return output + "\n";
3

Другие решения

Это:

Поэтому после вызова функции мне нужно закончить строку. Как может
Я делаю это внутри функции?

бессмысленно. Вы не можете ничего сделать внутри функции, которая должна произойти после вызова функции. Если вызывающий код не отправляется std::endl в cout когда это предполагается, это проблема вызывающего кода, вы не можете — и не должны — пытаться исправить эту проблему в своей функции.

2

Упрощенная:

std::string fileName = getFilename();
std::ifstream file(fileName.c_str());
std::string output;
std::string line;
while (getline(file, line))
output.append(line);
output.append(1, '\n');
return output;
0

просто вернись output + '\n' вместо просто output,
'\n' код перехода для символа новой строки.

0
По вопросам рекламы [email protected]