2017-03-03 1 views
-1

일반적으로 파일 이름이 "example.txt"인 경우 다음 코드를 사용하여 파일에서 읽을 수 있습니다. 접두어와 타임 스탬프가있는 파일을 C++에서 파일 이름으로 읽는 방법

string line; 
    ifstream myfile ("example.txt"); 
    if (myfile.is_open()) 
    { 
    while (getline (myfile,line)) 
    { 
     cout << line << '\n'; 
    } 
    myfile.close(); 
    } 

    else cout << "Unable to open file"; 

하지만 파일 이름이 example_201703031140.txt 또는 example_201703031142.txt 경우, 파일을 읽기 위해 같은 프로그램을 사용하는 방법. 이 파일이 해당 접두어가있는 위치의 유일한 파일이라고 가정 해 보겠습니다. 즉, 위치는 모두 example_201703031140.txt 또는 example_201703031142.txt 일 수 있습니다.

질문을 명확히하기 위해 어떻게 할 수 있습니까? 동적으로 변경되는 파일 이름을 읽을 수있는 프로그램을 작성합니까? 예를 들어, example_timestamp라는 이름의 파일에 작성해야하는 시나리오를 상상해보십시오.이 파일은 전체 파일 이름에 액세스 할 수는 없지만 "example"이라는 접두사와 타임 스탬프)

업데이트 : 타임 스탬프가 무엇인지 알지 못합니다. 타임 스탬프라는 것만 알면됩니다.

+0

을 링크에서

내가 동적 이름으로 로그를 생성하고 재사용 라이브러리를 만드는 방법 쇼를 링크 XY 옵션. 파일 쓰기가 읽기와 겹치지 않을 정도로 간격이 있으면 항상 동일한 이름을 쓰십시오. 그런 다음 일반 이름을 읽고 완료되면 시간 소인으로 파일의 이름을 바꿉니다. – user4581301

+0

그렇지 않으면 디렉토리 목록 (특정 코드 또는 다음 몇 달 동안 C++ 17이 떨어질 때까지 필요한 Boost와 같은 것)을 가져 와서 목록에서 원하는 파일로 그림을 가져옵니다. – user4581301

+0

또 다른 X-Y 옵션 : 두 프로세스간에 소켓 또는 파이프와 같은 IPC 연결을 열고 사용 가능한 파일이 있고 이름이 무엇인지 라이터에게 알려주도록합니다. – user4581301

답변

1

을 당신이 이런 식으로 뭔가하고 싶은 생각 :

DIR* dirp = opendir("the dir name"); 
while(struct dirent* e = readdir(dirp)){ 
    if e->d_name matches the pattern you wanted{ 
      do whatever you want with this file. 
    } 
} 
-2

첫째, 당신은 날짜 시간 형식을 만드는 예를 들어, 파일 이름의 접두사 나 접미사를 만들 필요가 : 그 후

char buffer[128]; 
time(&rawtime); 
timeinfo = localtime(&rawtime); 
strftime(buffer, 80, format.c_str(), timeinfo); 
out << buffer; 

당신이 확인하고 그것을 사용하는 파일 이름을 구축 할 수 있습니다.

https://github.com/jorgemedra/APILogCpp/blob/master/APILogCpp/UIPILog/LogManager.cpp