c++ string 解析ip
比如输入是192.168.80.12-15,解析成192.168.80.12、192.168.80.13、192.168.80.14、192.168.80.15;
亦或192.168.10.10-192.168.10.12,解析成192.168.10.10、192.168.10.11、192.168.10.12
#include <iostream> #include <vector> #include <string> #include <sstream> #include <fstream> void ReadDataFromFile(std::string& filename, std::vector<std::string>& lines_feat) { std::ifstream vm_info(filename.c_str()); std::string lines; lines_feat.clear(); while(!vm_info.eof()) { getline(vm_info, lines); if(lines.empty()) break; lines_feat.push_back(lines); } } std::vector<std::string> split(const std::string& s, char& delimiter) { std::vector<std::string> tokens; std::string token; std::istringstream tokenStream(s); while(std::getline(tokenStream, token, delimiter)) { tokens.push_back(token); } return tokens; } int stringtoint(const std::string& s) { std::istringstream iss(s); int num; return iss>>num?num:0; } /*处理IP格式为:192.168.125.10-192.168.125.100*/ void printip2(const std::string& s) { std::vector<std::string> temp, ip_segment, ip_end_v; temp=split(s, '-'); ip_segment=split(temp.front(), '.'); ip_end_v=split(temp.back(), '.'); std::string ip_start=ip_segment.back(), ip_end=ip_end_v.back(); int start=stringtoint(ip_start); int end=stringtoint(ip_end); for(size_t i=start; i<=end; ++i) { std::cout<<ip_segment[0]<<"."<<ip_segment[1]<<"."<<ip_segment[2]<<"."<<i<<"\n"; } } /*处理IP格式为:192.168.125.10-100*/ void printip(const std::string& s) { std::vector<std::string> temp, ip_segment; temp=split(s, '-'); ip_segment=split(temp.front(), '.'); std::string ip_start=ip_segment.back(), ip_end=temp.back(); int start=stringtoint(ip_start); int end=stringtoint(ip_end); for(size_t i=start;i<=end;++i) { std::cout<<ip_segment[0]<<"."<<ip_segment[1]<<"."<<ip_segment[2]<<"."<<i<<"\n"; } } int main() { std::string file_path("vm.data"); std::vector<std::string> ip_vec; ReadDataFromFile(file_path, ip_vec); for(std::vector<std::string>::const_iterator it=ip_vec.begin();it!=ip_vec.end();++it) { printip2(*it); } return 0; }
分类:
C++程序设计
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现