2017-10-11 5 views
0

이 log.txt 텍스트 파일을 내 프로그램에서 구조체로 읽는 방법? (C++) ///////////////////////////////////////////////////////////////////////////////////////////////////// /////////C++에서이 로그 텍스트 파일을 읽는 방법

Port4000.txt:M:r:10 

Port4001.txt:M:w:1 

Port4002.txt:M:w:9 

Port4003.txt:J:x:1 

대표 :

Port40xx.txt 포트 번호 를 나타낸다 : M 사용자 를 나타낸다 : R 행동 를 나타낸다 : 10 임계 값을 나타낸다

/////////////////////////////////////// ///////////////////////////////

struct Pair 
{ 

char user; 

char action; 

} 

int main() 
{ 

    Pair pairs; 

    ifstream infile; 

    char portnumber[20]; 


    infile.open("logs.txt",ios::in); // `open the log text file ` 


    infile.getline(portnumber,20,':'); //`Reading the portnumber of the user and action 
` 

infile >> pairs.user >> pairs.action >> threshold; 

//`THE PROBLEM IS HOW TO read the user, action, threshold whenever it meets ":" symbol?` 

infile.close(); 

return 0; 

} 

":"기호를 만나고 다른 char 데이터 형식을 읽기 시작할 때까지 char 데이터 형식을 읽는 방법이 있는지 알려주십시오. 당신에게 :) 감사

+0

"Port40xx.txt는 포트 번호를 나타냅니다."- 이상한 숫자입니다. – sehe

답변

1

당신은 당신이 "PORTNUMBER '를 위해 한 일을 계속 할 수 있습니다

Live On Coliru

#include <fstream> 
#include <iostream> 

struct Pair { 
    char user; 
    char action; 
}; 

int main() 
{ 

    std::ifstream infile; 

    infile.open("logs.txt", std::ios::in); // `open the log text file ` 

    std::string portnumber, user, action, threshold; 
    if (getline(infile, portnumber, ':') 
      && getline(infile, user, ':') && user.size() == 1 
      && getline(infile, action, ':') && action.size() == 1 
      && getline(infile, threshold, '\n')) 
    { 
     Pair pair { user[0], action[0] }; 

    } 
} 

참고 std::getline의 사용이 안전 (더 편리)보다는