【发布时间】:2022-01-13 22:19:10
【问题描述】:
我有一个包含一些 IP 地址的文本文件。
IP地址换个地方怎么获取(比如从头取IP地址写到最后)
文本示例:
"192.168.4.163 - - [22/Dec/2016:22:32:32 +0300] "GET / HTTP/1.1" 200 3279 "-" "w3af.org""
"192.168.4.163 - - [22/Dec/2016:22:32:32 +0300] "GET / HTTP/1.1" 200 3279 "-" "w3af.org""
" - - [22/Dec/2016:22:32:32 +0300] 192.168.4.163 "GET / HTTP/1.1" 200 3279 "-" "w3af.org""
代码部分:
ifstream listfile;
listfile.open("log.txt");
ofstream cleanIp;
cleanIp.open("ipAddress.txt");
ifstream readIp;
string ipLine;
readIp.open("ipAddress.txt");
string temp;
while(listfile>>temp) //get just ips
{
cleanIp<<temp<<endl;
listfile>>temp;
getline(listfile, temp);
}
【问题讨论】:
-
一个好的第一步是编写一个在字符串中查找 IP 地址的解析器。 C++(据我所知)中没有任何东西可以为您做到这一点。尝试创建它,发布代码,我们可以从那里开始。
-
您可以将正则表达式系统与
.*(\d+\.\d+\.\d+\.\d+).*之类的匹配项一起使用。你可能不得不玩一下。 -
在您的示例中,IP 地址始终位于开头。如果你想在不同的地方处理 IP 地址,你的例子应该提供包含 IP 地址的行,而不是在开头。
-
@Mehmet 你为什么不分享你的尝试?然后简化它。例如,尝试仅获取 192 部分。那将是一个更简单的正则表达式。