getline (stream, string) из примера отклоняется редактором (VS2019) - PullRequest
0 голосов
/ 11 февраля 2019

Пример взят из: [http://www -h.eng.cam.ac.uk / help / tpl / languages ​​/ C ++ / 1AComputing / Mich / index.php? Reply = extraReadingfromfiles # extraReadingfromfilesanchor] [1]

Я написал код без цикла while для чтения файла, использовался пример getline(stream, strgvar), но редактор этого не воспринимает

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string message;
    ifstream fin;       // variable to store information about a file
    fin.open("s.txt");      // trying to open file for reading
    //  next line would try to check if file has been opened succesfully
    if (not fin.good())
    {
        cout << "\n\t Couldn't open the s file." << endl;
        cout << "\n\t It needs to be in the same folder as your program." 
             <<endl;
        return 1;       // In the main function this line quits from the 
                        whole program.
    }
    // we have menaged to open the file. Now we'll read a line from the file into the string
    while (message!="works!")
    {
        fin >> message;
        cout << message << " ";
    }
    //getline(fin,message);
}

Мои вопросыпочему строка с комментариями отклонена?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Для использования std::getline() включите <string> в заголовок.https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/2whx1zkx(v=vs.100)

istream также имеет getline.Подробнее здесь https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa277361(v=vs.60)

0 голосов
/ 12 февраля 2019

плавник >> сообщение;Оператор извлечения потока «>>» используется, когда вы хотите прочитать одно слово из файла.Найти полное объяснение можно по адресу: https://www.google.com/amp/s/www.geeksforgeeks.org/cpp-program-read-file-word-word/amp/

Пока getline (fin, message);При этом полная строка из файла будет прочитана в переменной сообщения.Он продолжит чтение и присвоение содержимого файла до тех пор, пока символ '\ n' (разделитель строк) не появится.И именно поэтому вы getline () заявление отклонено.Для полного объяснения посетите: http://www.cplusplus.com/forum/windows/48212/

Ожидается, что ваша программа будет читать слово одновременно.И для этого используется fin >> mesage.В основном оператор извлечения потока читает содержимое до появления пробела, и, следовательно, он используется для чтения одного слова.

И если вы все еще хотите использовать getline (), добавьте третий параметр в вызов функции как пробелперсонаж ' '.Как getline (fin, message, '');// и сделано В основном третий параметр функции getline - это Deliminator, по умолчанию это '\ n', но если вы хотите определить свой собственный Deliminator, вы можете сделать это, указав третий параметр.Он будет читать содержимое файла до тех пор, пока во время чтения не произойдет разделитель.

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