내가 (tail -F
가하는 일에 비슷한) 성장하는 파일에서 읽을하려고하지만, 내 코드 몇 가지 문제가 있어야합니다 : 선없이C++에서 증가하는 텍스트 파일을 읽는 방법?
string log, logFile("test.log");
size_t p = 0;
while(true)
{
ifstream ifs(logFile.c_str());
ifs.seekg(p); //*1
while(ifs.eof() == false)
{
getline(ifs, log);
cout << log << endl;
p = ifs.tellg(); //*2
}
nanosleep(&pause, NULL);
}
// * 1 // * 2, 로그 파일을 올바르게 끝까지 읽지 만 새 줄을 추가하면 아무 일도 일어나지 않습니다.
seekg와 tellg을 사용하여 파일의 현재 끝 위치를 저장하려고합니다. 다시 열면 거기에 갈 수있어 추가 된 내용을 읽을 수 있습니다.
내 코드에서 무엇이 잘못되었는지 알고 싶습니다.이 목적으로 동일한 파일을 닫았다가 다시 열어야하는 것이 정말 필요한 경우 알려주십시오.
감사합니다.
제대로 작동하고 있습니다. 고맙습니다. – Pietro
루프에 ifstream 객체를 만들면 작동하지만 그렇지 않으면 생성하지 않는 것으로 나타났습니다. 파일을 닫고 다시 열어 추가 된 내용을 읽어야합니까? – Pietro
@Pietro, 다음 읽기 시도 이전에'ifs.clear()'를 호출하여'ifstream'의 eof 상태를 지울 필요가 있습니다. 나는이 접근법에서'tellg()'와'seekg()'가 불필요 할 것이라고 생각한다. – hmjd