2012-04-22 4 views
7

C++에서 fstream 라이브러리 (또는 임의의 라이브러리)에 함수를 추출하지 않고 '\ n'의 단락 기호를 읽을 수있는 함수가 있습니까?C++ 함수를 추출하지 않고 라인을 읽는 fstream 함수?

peek() 함수는 프로그램이 추출하지 않고 다음 문자를 읽을 때 'peek'을 허용한다는 것을 알고 있지만 전체 행에서는 peek() 함수처럼 필요합니다.

+0

사용 사례는 무엇입니까? XY 문제처럼 들립니다. –

+0

그것의 텍스트 파일을 읽고 그 다음 값이 sentential 문자열인지 아닌지를 결정하기 위해 peek() 함수를 사용하고 싶습니다. 아래의 방법은 완벽하게 내 문제를 해결했습니다. – SexyBeastFarEast

답변

11

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

감사합니다 Kleist이 방법은 완벽하게 작동합니다! 그래서 나는 라인을 읽는 함수처럼 peek()이 없다고 가정한다. – SexyBeastFarEast

+0

사실, 그러한 peek-function은 없습니다. – Kleist