如何在C++中读取这个日志文本文件

问题描述:

如何将这个log.txt文本文件读入我的程序中的一个struct? (C++) ////////////////////////logs.txt /////////////////// /////////如何在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 2表示动作 : 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

你可以继续做你做了什么 “端口号”:

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是安全的(且更方便),比std::istream::getline