Как прочитать файл с пробелами в C ++? - PullRequest
0 голосов
/ 15 марта 2020

На прошлой неделе я начал посещать занятия по С ++ в университете. На данный момент я просто знаю некоторый C язык, который немного смущает меня при изучении C ++. У меня есть это упражнение, которое говорит: «Напишите и используйте библиотеку fstream для чтения текстового файла. Функция должна записывать на экране каждую текстовую строку, прочитанную из файла (с пробелами).»

Я написал код ниже, который может написать строку, но без пробелов. Я также слышал о getline, но я не знаю, как его использовать, компилятор все время говорит: «Нет подходящей функции для вызова getline».

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

using namespace std;

file_read(){
    ifstream origem;
    origem.open("ficheiro.txt");


    if (!origem) {
        cerr << "Error" << endl;
        return -1;
    }
char outp[100];

while(!origem.eof() ){
    origem >> outp;
    cout << outp;
    }

return 0;
}

Например: если у меня есть в ficcheiro.txt "У моей собаки есть кость", программа напишет это как "Mydoghasabone"

Так что с getline я попробовал это:

...
    ifstream origem;
    origem.open("ficheiro.txt");


    if (!origem) {
        cerr << "Error" << endl;
        return -1;
}
    char outp[100];

    getline(origem, outp);
    origem >> outp;
    cout << outp;

    return 0;
}

Компилятор сказал: [Ошибка] нет подходящей функции для вызова 'getline (std :: ifstream &, std :: char [100])'

Моя проблема заключается в том, чтобы просто прочитать файл с пробелами!


У меня также есть некоторые проблемы с изучением C ++, я начал изучать «Классы» и использовать CMD, и я даже не знаю, что я изучаю. Вы знаете, где я могу узнать C ++ более понятным способом?

1 Ответ

1 голос
/ 15 марта 2020

Попробуйте это

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

using namespace std;

int file_read()
{
    ifstream origem;
    origem.open("ficheiro.txt");


    if (!origem) {
        cerr << "Error" << endl;
        return -1; 
    }
    char outp[100];

   while( origem.getline(outp,100) )
        cout << outp;

return 0;
}

int main()
{
    file_read();
}

Компилятор сказал: [Ошибка] нет соответствующей функции для вызова 'getline (std :: ifstream &, std :: char [100])'

, если вы хотите использовать getline (), измените outp с char на string, как

string outp;

while( getline(origem,outp))
    cout << outp;

Поскольку getline () для string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...