2013-03-01 3 views
2

많은 양의 데이터를 별도의 텍스트 파일에 출력하는 프로그램을 작성하려고합니다. 각 파일의 제목을 으로하고 싶습니다. Poker_Log_timestamp_datestamp.txt 그러나 실제로 파일을 만들거나 오류를 발생시키지 않습니다.제목에 타임 스탬프가있는 텍스트 파일 만들기

#include <fstream> 
#include <iostream> 
#include <ctime> 
#include <string> 
using namespace std; 

int main(){ 
    char sdate[9]; 
    char stime[9]; 
    fstream log; 
    _strdate_s(sdate); 
    _strtime_s(stime); 
    string filename = "Poker_Log_"; 
    filename.append(stime); 
    filename.append("_"); 
    filename.append(sdate); 
    filename.append(".txt"); 
    cout<<"Filename == "<<filename<<endl; 
    log.open(filename.c_str()); 
    log<<"\n\nHuman won the tournament.\n"; 
    log.close(); 
    system("Pause"); 
} 

가 어떻게이 일을 어떻게해야합니까 : 여기

코드인가? 다른 한 가지 : filename.append(stime)filename.append(sdate)을 주석 처리하면 정상적으로 작동합니다.

해결 : D 파일 이름에는 슬래시 또는 콜론이 없으므로 둘 다 대시로 바꿉니다.

#include <fstream> 
#include <iostream> 
#include <ctime> 
#include <string> 
#include <cstdio> 

using namespace std; 

int main(){ 
    char sdate[9]; 
    char stime[9]; 
    ofstream log; 
    _strdate_s(sdate); 
    _strtime_s(stime); 
    string filename = "Poker_Log_"; 
    filename.append(stime); 
    filename.append("_"); 
    filename.append(sdate); 
    filename.append(".txt"); 
    for(int i = 0; i<filename.length(); ++i){ 
     if (filename[i] == '/' || filename[i] == ':') 
      filename[i] = '-'; 
    } 
    log.open(filename.c_str()); 
    if (log.fail()) 
     perror(filename.c_str()); 

    log<<"\n\nHuman won the tournament.\n"; 
    log.close(); 
    system("Pause"); 
} 
+1

이'_strdate_s'와'_strtime_s' 함수는 무엇인지 모르겠지만'log.open' 바로 전에'cout << ...'줄이 출력하기를 기대하는 것을 출력한다면 문제는 * 파일 이름의 구성과 관련이 없습니다. 당신은'log.open'에서 에러를 검사하지 않습니다 - fstream은 예외를 던져서 신호 실패를하지 않습니다. 'log.open' 줄 바로 다음에'if (log.fail()) perror (filename.c_str());를 추가하면 어떻게됩니까? (컴파일 할 때'#include '을 추가해야 할 수도 있습니다.) – zwol

+0

"Poker_log_17 : 18 : 13_03/01/13.txt : 잘못된 해석. '/ '가 혼란 스러울 것 같아서 날짜를 삭제했지만 시간 전용 버전에 대해서도 똑같은 내용이 표시됩니다. – Magicaxis

+1

파일 시스템에 따라 콜론도 문제가 될 수 있습니다. –

답변

3

날짜 및 시간 문자열에는 파일 시스템에 적합한 문자가 아닐 수있는 콜론 같은 문자가 포함될 수 있습니다.

+0

콜론은 다음과 같습니다. 불법도?! aaaaaah 될거야! * 코딩 시작 * 쿨 : D 오류 메시지가 이제'(파일 이름) : 해당 파일이나 디렉토리가 없음'으로 변경되었습니다. – Magicaxis

+0

알리미 :'fstream log'를 'ofstream log' 감사합니다! – Magicaxis

2

사용하여 다음과 같은 : 여기에 작업 코드는

log.open(filename.c_str()); 

open 방법은 C 스타일의 문자열이 아니라 C++ std::string 별칭으로하는 char *이 필요합니다.

+0

시도해 보니 차이점이없는 것으로 보입니다. ( – Magicaxis

관련 문제