如何从c ++中的文件中获取特定字符串?

时间:2014-04-29 03:34:15

标签: c++ string

我有一个包含特定布局数据的文件。每行包含一个IP地址,我必须将其提取出来并将其与C ++中的其他内容进行比较。

一行如下:

  

t 0.00057 / NodeList / 0 / DeviceList / 0 / $ ns3 :: WifiNetDevice / Phy / State / Tx ns3 :: WifiMacHeader(DATA ToDS = 0,FromDS = 0,MoreFrag = 0,Retry = 0,MoreData = 0持续时间/ ID = 0usDA = ff:ff:ff:ff:ff:ff,SA = 00:00:00:00:00:01,BSSID = 00:00:00:00:00:01,FragNumber = 0, SeqNumber = 0)ns3 :: LlcSnapHeader(类型0x800)ns3 :: Ipv4Header(tos 0x0 DSCP默认ECN非-TET ttl 64 id 0协议17偏移量(字节)0标志[无]长度:228 10.1.1.1 < / strong>&gt; 10.1.1.255)ns3 :: UdpHeader(长度:208 49153> 80)有效负载(大小= 200)ns3 :: WifiMacTrailer()

我必须提取的IP地址是 10.1.1.1

文件中有10,000行。

  

t 0.00057 / NodeList / 0 / DeviceList / 0 / $ ns3 :: WifiNetDevice / Phy / State / Tx ns3 :: WifiMacHeader(DATA ToDS = 0,FromDS = 0,MoreFrag = 0,Retry = 0,MoreData = 0持续时间/ ID = 0usDA = ff:ff:ff:ff:ff:ff,SA = 00:00:00:00:00:01,BSSID = 00:00:00:00:00:01,FragNumber = 0, SeqNumber = 0)ns3 :: LlcSnapHeader(类型0x800)ns3 :: Ipv4Header(tos 0x0 DSCP默认ECN Not-ECT ttl 64 id 0协议17偏移量(字节)0标志[无]长度:228 10.1.1.1&gt; 10.1。 1.255)ns3 :: UdpHeader(长度:208 49153> 80)有效载荷(大小= 200)ns3 :: WifiMacTrailer()   r 0.00287433 / NodeList / 2 / DeviceList / 0 / $ ns3 :: WifiNetDevice / Phy / State / RxOk ns3 :: WifiMacHeader(DATA ToDS = 0,FromDS = 0,MoreFrag = 0,Retry = 0,MoreData = 0 Duration / ID = 0usDA = ff:ff:ff:ff:ff:ff,SA = 00:00:00:00:00:01,BSSID = 00:00:00:00:00:01,FragNumber = 0,SeqNumber = 0 )ns3 :: LlcSnapHeader(类型0x800)ns3 :: Ipv4Header(tos 0x0 DSCP默认ECN非-TET ttl 64 id 0协议17偏移量(字节)0标志[无]长度:228 10.1.1.1&gt; 10.1.1.255)ns3 :: UdpHeader(长度:208 49153> 80)有效载荷(大小= 200)ns3 :: WifiMacTrailer()

我如何获得这些IP? 任何人都可以帮我解释代码吗?

1 个答案:

答案 0 :(得分:0)

通常,您将以读取模式打开文件并读取每一行。似乎每条线都处于某种固定的模式中。格式。您可以在每行中搜索子字符串并从中提取IP地址。例如:您可以搜索&#34; [无]长度:&#34;并读取它后面的IP地址字符串(比如查找下一个空格并在这些索引之间选择子字符串)。

如果您使用的是MFC,那么您可以使用CStdioFile :: ReadString来读取每一行。如果您不使用MFC,可以参考this topic逐行读取文件。