2017-02-06 3 views
-1

Я пытаюсь прочитать текстовый файл на основе использования оператора >> потока, но это, кажется, читает файл слово за словом:Обнаружить конец строки при чтении из текстового файла C++

void printFile(char filename[]) 
{ 
    ifstream input; 
    input.open(filename); 

    char output[50]; 
    if (input.is_open()) { 
     while (!input.eof()) { 
      input >> output; 
      cout << output << endl; 
     } 
    } 
    else cout << "File is not open!"; 

    input.close(); 
    cout << endl; 
} 

только проблема заключается в том, что он не будет распечатывать строки.

Обратите внимание, что я все еще изучаю C++, и цель заключается в достижении этого без using string s (так без getline). Есть ли способ сделать это, или это просто невозможно?

+1

ли цель просто не GetLine? Вместо этого вы могли бы прочитать символ, который предотвратил бы потерю '\ n' – odin

+0

Прочитайте файл с помощью getline(), так что вам не нужно беспокоиться о разрывах строк. И прочитайте https://latedev.wordpress.com/2012/12/04/all-about-eof, чтобы узнать, почему бы не зациклиться на eof(). –

+0

@NeilButterworth Я думаю, вы пропустили часть моего вопроса –

ответ

0

Благодаря @odin я нашел решение, читая файл по характеру, а не словом:

void printFile(char filename[]) 
{ 
    char ch; 
    fstream fin(filename, fstream::in); 
    while (fin >> noskipws >> ch) { 
     cout << ch; 
    } 
    fin.close(); 
} 
Смежные вопросы