Как прочитать getline с переводом строки?

Рейтинг: 1Ответов: 2Опубликовано: 02.12.2014

Как прочитать getline с переводом строки... а то приходится самому добавлять \n.

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

void FuncReadFile(char* path, std::string &text)
{
    //Переменная для чтения по указанному пути
    std::ifstream FileInput(path);
    std::string str;
    while (!FileInput.eof())
    {
        getline(FileInput, str);
        text = text+ str + "\n";
    }
}

int main()
{
    setlocale(LC_ALL, "RUS");
    std::string text;
    char* path = "input.txt";
    FuncReadFile(path, text);
        std::cout << text<<std::endl;

    std::cout << "END" << std::endl;
    system("pause");
}

Ответы

▲ 1Принят
getline (FileInput,str,'\0');
▲ 1

Чтобы прочитать файл целиком без преобразований (таких как \r\n -> \n или преобразований, связанных с текущей локалью), можно использовать read() метод:

ifstream file(filename, ios::in | ios::binary | ios::ate);
const ifstream::pos_type file_size = file.tellg();
vector<char> data(file_size); 
file.seekg(0, ios::beg);
file.read(&data[0], file_size); // C++11

Результат в векторе data. Полный пример кода. Можно также использовать строку string data(file_size, '\0'); вместо вектора.

Вот сравнение производительности нескольких методов чтения файла в C++, используя разные компиляторы, платформы: Reading in an entire file at once in C++.