membaca baris dari ifstream menjadi variabel string

Dalam kode berikut:

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

using namespace std;

int main() {
    string x = "This is C++.";
    ofstream of("d:/tester.txt");
    of << x;
    of.close();


    ifstream read("d:/tester.txt");
    read >> x;
    cout << x << endl ;
}

Output :

This

Karena operator >> membaca hingga spasi pertama saya mendapatkan output ini. Bagaimana cara mengekstrak baris kembali ke string?

Saya tahu bentuk istream& getline (char* s, streamsize n ); tetapi saya ingin menyimpannya dalam variabel string. Bagaimana cara melakukan ini?


person Suhail Gupta    schedule 12.07.2011    source sumber
comment
Lihat juga sarannya di sini: stackoverflow.com/questions/116951/   -  person Itamar Katz    schedule 12.07.2011


Jawaban (1)


Gunakan std::getline() dari <string>.

 istream & getline(istream & is,std::string& str)

Jadi, untuk kasus Anda adalah:

std::getline(read,x);
person jonsca    schedule 12.07.2011
comment
Nilai kembalian getline() (objek aliran) harus dievaluasi dalam ekspresi bool. Evaluasi bool terhadap objek aliran melakukan trik yang sangat penting di sini: ia mengevaluasi failbit dan badbit dari aliran yang mendasarinya. Kita harus memanfaatkannya. Penjelasan lebih mendalam dapat ditemukan di sini: gehrcke.de/2011/06/ - person Dr. Jan-Philip Gehrcke; 18.01.2015