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

225
15 декабря 2016, 16:12

Как прочитать 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");
}
Answer 1
getline (FileInput,str,'\0');
Answer 2

Чтобы прочитать файл целиком без преобразований (таких как \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++.

READ ALSO
Кодировка ASCII в Xcode

Кодировка ASCII в Xcode

В Xcode при вводе русского символа в переменную типа char, если сразу же вывести эту самую переменную, выводит \320 или что-то похожее

307
Нахождение корней методом Ньютона

Нахождение корней методом Ньютона

Помогите, пожалуйста, с одной проблемойЯ никак не могу вывести значение х

245
Выделение лексем

Выделение лексем

Написать программу, использующую механизм управления при помощи таблиц (управление осуществляется данными!)Нужно выделить следующие типы...

244