如何在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数据类型。谢谢:)
答
你可以继续做你做了什么 “端口号”:
#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
“Port40xx.txt表示端口号” - 这是一个奇怪的数字 – sehe