2012-04-22 61 views
7

Trong C++, có hàm nào trong thư viện fstream (hoặc bất kỳ thư viện nào) cho phép tôi đọc một dòng đến dấu phân cách '\ n' mà không cần trích xuất không?Hàm C++ fstream đọc một dòng không trích xuất?

Tôi biết hàm peek() cho phép chương trình 'peek' ở ký tự tiếp theo mà nó không đọc nhưng tôi cần hàm peek() giống như chức năng nhưng cho toàn bộ dòng.

+0

Trường hợp sử dụng của bạn cho điều này là gì? Nghe có vẻ giống như một vấn đề XY. –

+0

của nó để đọc một tập tin văn bản và từ nó tôi muốn sử dụng một peek() như chức năng để xác định nếu giá trị tiếp theo mà đọc trong là một chuỗi sentential hay không. phương pháp bên dưới hoạt động hoàn hảo cho vấn đề của tôi. – SexyBeastFarEast

Trả lời

11

Bạn có thể thực hiện việc này với sự kết hợp của getline, tellgseekg.

#include <fstream> 
#include <iostream> 
#include <ios> 


int main() { 
    std::fstream fs(__FILE__); 
    std::string line; 

    // Get current position 
    int len = fs.tellg(); 

    // Read line 
    getline(fs, line); 

    // Print first line in file 
    std::cout << "First line: " << line << std::endl; 

    // Return to position before "Read line". 
    fs.seekg(len ,std::ios_base::beg); 

    // Print whole file 
    while (getline(fs ,line)) std::cout << line << std::endl; 
} 
+0

Cảm ơn Kleist phương pháp này hoạt động hoàn hảo! Vì vậy, tôi giả sử không có peek() như chức năng đọc một dòng? – SexyBeastFarEast

+0

Đúng, không có chức năng nhìn trộm như vậy. – Kleist