[MFC]使用编辑框来设置IP地址

2023-05-16

我们除了使用IP控件来设置控件之外还可以使用编辑框来设置IP,这样的话,就需要来进行判断我们输入的IP是否合法

判断IP地址合法的标准:
①字符串中必须包含3个符号“.”;
②被符号“.”分隔的4个字符串的长度必须小于或等于3
③被符号“.”分隔的4个字符串必须可以转换成整数;
④被符号“.”分隔的4个字符串转换成的整数不得大于255

bool IsValidIP(char *ip)
{
     std::string sip = ip;
	int pos = (int)sip.find_first_of(".");//查找第1个符号“.”的位置
	if (pos == 0)//如果没有找到,则返回false
		return false;
	std::string s1 = sip.substr(0, pos);//s1是IP地址中的第1个数字
	sip = sip.substr(pos + 1, sip.length() - pos);
	if (s1.length() > 3)
		return false;
	for (int i = 0; i < (int)s1.length(); i++)//判断是否每个字符都是数字
	{
		int c = s1.c_str()[i];
		if (!isdigit(c))
			return false;
	}
	int a = atoi(s1.c_str());//判断是否在1~255之间
	if (a < 1 || a>255)
		return false;
	pos = (int)sip.find_first_of(".");
	std::string s2 = sip.substr(0, pos); //s2是IP地址中的第2个数字
	sip = sip.substr(pos + 1, sip.length() - pos);
	if (s2.length() > 3)
		return false;
	for (int i = 0; i < (int)s2.length(); i++)//判断是否每个字符都是数字
	{
		int c = s2.c_str()[i];
		if (!isdigit(c))
			return false;
	}
	a = atoi(s2.c_str());
	if (a > 255)//判断是否在0~255之间
		return false;
	pos = (int)sip.find_first_of(".");
	std::string s3 = sip.substr(0, pos); //s3是IP地址中的第3个数字
	sip = sip.substr(pos + 1, sip.length() - pos);
	if (s3.length() > 3)
		return false;
	for (int i = 0; i < (int)s3.length(); i++)//判断是否每个字符都是数字
	{
		int c = s3.c_str()[i];
		if (!isdigit(c))
			return false;
	}
	a = atoi(s3.c_str());
	if (a > 255)//判断是否在0~255之间
		return false;
	pos = (int)sip.find_first_of(".");
	std::string s4 = sip.substr(0, pos); //s4是IP地址中的第4个数字
	sip = sip.substr(pos + 1, sip.length() - pos);
	if (s4.length() > 3)
		return false;
	for (int i = 0; i < (int)s4.length(); i++)//判断是否每个字符都是数字
	{
		int c = s4.c_str()[i];
		if (!isdigit(c))
			return false;
	}
	a = atoi(s4.c_str());
	if (a > 254)//判断是否在0~254之间
		return false;
	//通过上面所有检测后,确定该字符串为合法IP地址
	return true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[MFC]使用编辑框来设置IP地址 的相关文章

  • MFC winMain 如何最终进入可执行文件?

    In MFC wWinMain定义于appmodul cpp 据我所知 该文件内置于 mfc90ud dll 中 但是 当我运行我的应用程序时 调用堆栈显示MyApplication exe wWinMain 它是如何采取的wWinMain
  • dll 中的 MFC LoadString 失败

    我在 dll 中有一个静态函数 它使用 LoadString 从资源加载字符串 当我从该 dll 调用此函数时 一切正常 但是 当我从其他模块 activeX 控件 调用此函数时 LoadString 失败并出现错误 ERROR RESOU
  • GetWindowRect 坐标不与屏幕相关

    我正在使用 Visual Studio 2008 C 工作 我有一个 MFC 对话框 里面有一个控件 我正在尝试在控件中放置另一个对话框 第二个对话框上的 SetWindowPos 显然使用屏幕坐标 因此我需要获取控件或父对话框的屏幕坐标
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda
  • 将简单的 MFC CView/CDocument/CSingleDocTemplate 应用程序转换为 ActiveX 控件

    我有一个相当简单的 MFC 应用程序 它只定义了自己的子类CDocument CView and CFrameWnd并通过使用它们CSingleDocTemplate在视图的树中显示文档的只读内容 都是非常标准的MFC MVC 我现在需要转
  • 使用 CSplitterWnd 在 CChildFrame 中创建多个视图

    我正在使用 MFC MDI 我需要创建如下视图 我的 ChildWnd 分为两部分 它们是LeftView CView 和RightView CScrollView LeftView 分为两部分 TreeView 和 FormView 我怎
  • MFC:如何捕获Web浏览器控件中的链接单击事件?

    我有一个带有 Web 控件的 MFC 应用程序 单击可单击链接时 它将使用 IE 打开 而不是默认浏览器 问题 有没有办法强制使用默认浏览器打开它 如果没有 我如何捕获链接单击事件 以便稍后可以操纵单击事件 谢谢 不 据我所知还没有 查看有
  • AfxGetAppName() 返回垃圾字符

    我的应用程序中有以下代码行 CString strAppName AfxGetAppName 有时会充满strAppName出现了垃圾字符 我不明白为什么 有人有主意吗 TIA 如果你改变的话这是可能的m pszAppName手动 在应用程
  • 编辑默认工具栏时 Microsoft Visual Studio“未知位图格式”

    我已使用项目创建向导使用 Microsoft 基础类库 MFC 创建了一个应用程序 我创建了一个多文档界面 MDI 应用程序 该向导创建您可以使用的虚拟工具栏和菜单 我扩展了默认工具栏 没有任何问题 但是现在当我尝试通过资源视图编辑它时 我
  • 如何调整 CWnd 内 WPF 控件的大小?

    我正在托管 WPFUserControlMFC 内部CWnd 它工作得很好 我现在需要弄清楚如何与其父控件一起调整控件的大小 我已经迷上了OnSize我正在打电话GetWindowRect并将结果设置为我的控件 如下所示 void CChi
  • 禁用/启用 MFC 功能包的功能区按钮

    我正在使用 MFC 功能包 并且功能区栏上有一些按钮 即 CMFCRibbonButton 的实例 问题是我想在某些条件下启用和禁用其中一些 但在运行时 我怎样才能做到这一点 因为没有具体的方法 我听说解决方案是在运行时附加 分离事件处理程
  • 如何将基数词转换为序数词

    有没有一种简单的方法可以将数字 1 2 3 转换为 1st 2nd 3rd 并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗 标准 C stl 或 boost 都可以 MFC 或 ATL win32 api 或我
  • 对 MFC UI 应用程序进行单元测试吗?

    如何对大型 MFC UI 应用程序进行单元测试 我们有一些大型 MFC 应用程序已经开发了很多年 我们使用一些标准的自动化 QA 工具来运行基本脚本来检查基础知识 文件打开等 这些由 QA 小组在日常构建后运行 但我们希望引入一些程序 以便
  • C++ 检查 unicode 字符是否为全角

    如何检查unicode字符是否是全角 我使用Win32 MFC 例如 中是全宽 A不是全角 是全宽 F不是全宽 你需要的是检索东亚宽度 http www unicode org reports tr11 的角色 您可以通过解析来做到这一点东
  • 屏幕截图忽略了一些窗口

    我正在 MFC 中工作 我正在尝试捕获桌面的 bmp 我正在使用 GetDC NULL 来执行此操作 但它似乎忽略了特殊的皮肤窗口 它似乎忽略了用 UpdateLayeredWindow 绘制的窗口 此行为似乎仅发生在 Vista x64
  • 如何在 MFC 中调整对话框大小时移动控件?

    我已经在 MFC 中创建了对话框视图 从下图中可以清楚地看到 如滑块控件和编辑框等 当我调整对话框大小时 这些控件不会移动 在此输入图像描述 https i stack imgur com 7OxAK jpg 我想移动控件以适应对话框 但不
  • 具有键唯一性和按位置排序的 MFC 字典集合

    看着表上http msdn microsoft com en us library y1z022s1 28v vs 80 29 aspx core collection shape features http msdn microsoft
  • 用于基于 MFC 的 GUI 应用程序的免费自动化测试工具

    我是 Windows 开发和测试平台的新手 我正在开发一个基于 MFC 的 GUI 应用程序 并正在寻找有助于 UI 自动化测试的工具 我搜索时出现了一大堆工具 但大多数似乎都不支持MFC 我考虑的选项是 A 编码 UI UI 自动化 看起
  • 使用 MFC 对象初始化 std::map 无法编译

    MFC初学者看这里 我尝试过初始化std map像这样 在CView的标题中 myprogramView h std map
  • MFC:从另一个线程调用 CWnd 方法安全吗?

    其实我有两个问题 打电话安全吗SendMessage来自工作线程 Do CWnd方法 比如MessageBox 调用API函数SendMessage幕后 根据我的理解 当工作线程调用时SendMessage 它将消息推送到UI线程的消息队列

随机推荐

  • 建立本地分支与远程分支关联

    文章目录 全过程使用的指令1 1 更新 remote 版本1 2 建立一个新的分支与远程分支对应1 3 关联远程仓库分支 全过程使用的指令 span class token function git span fetch span clas
  • 遥感卫星飞行控制系统设计

    文章目录 1 卫星姿态控制模块组成2 转动惯量和地球自转角速度3 初始姿态和目标姿态4 欧拉角转四元数及四元数转欧拉角5 仿真6 绘图分析 1 卫星姿态控制模块组成 其中执行机构为零动量反作用飞轮 xff0c 此处略去 xff1b 传感器测
  • Objects Track Benchmarks

    MOT 2D MOT MOT challengeTAOCaltech Roadside PedestriansBDD100KWaymoAOTPANDAArgoVerseHiEve Multi person Motion TrackingUA
  • 树莓派4B全40管脚对应功能示意图

    以下两图中 xff0c 图1是树莓派引脚功能图 xff0c 其对应图2红框标注的部分 xff0c 黄色数字标注了对应的管脚 谢谢评论区指正 xff0c 实在抱歉 xff0c 实物图部分误用了树莓派1代的实物图 xff0c 但树莓派4b整体布
  • 【数据结构与算法】车辆路径问题(Vehicle Routing Problem,VRP)

    车辆路径问题 xff08 Vehicle Routing Problem VRP xff09 什么是车辆路径问题 车辆路线问题 xff08 VRP xff09 是指一定数量的客户 xff0c 各自有不同数量的货物需求 xff0c 配送中心向
  • 护士实习自我鉴定

    医院实习护士的评价 篇一 短短一个月的泌尿外科实习生活已接近尾声 xff0c 回顾这段时间的实习生活 xff0c 我感受很深 泌尿外科是我实习的第二站 xff0c 相对肝胆外科就不是那么的忙碌 在泌尿外科经历的业务学习是让我印象最深刻的 x
  • uni-app 实现照片水印并上传照片

    话不多说 xff0c 直接代码 lt template gt lt view class 61 34 wrap 34 gt lt u form model 61 34 model 34 ref 61 34 uForm 34 gt lt u
  • 文档服务器minio 可通过文件路径进行访问

    方法一 登陆服务器 xff0c 直接修改桶的权限 xff1a 1 2 3 4 方法二 创建桶的时候设置桶的策略 xff08 注 xff1a minio版本过高 xff0c 可能没有此方法 xff09 创建一个名为managertest的文件
  • JAVA 视频压缩

    项目依赖 开发引入Windows依赖 xff0c 生产引入linux依赖 xff1b 建议一次都引入 lt 视频压缩 gt lt dependency gt lt groupId gt ws schild lt groupId gt lt
  • Elasticsearch 7.X以上依赖自带jdk

    将 elasticsearch env 中的环境依赖修改为 set JAVA 61 ES HOME jdk bin java exe
  • JPA时间注解的使用

    JPA时间注解 64 Temporal注解 格式化时间日期 xff0c 页面直接得到格式化类型的值 64 Temporal TemporalType DATE 只代表年月日 xff0c 没有时分秒 在页面端取值 xff1a 2019 03
  • python 无人机、飞机轨迹(含姿态角)可视化方法

    无人机 飞机轨迹 含姿态角 可视化方法 目标 xff1a 在三维直角坐标系中画出包含无人机位置pos 偏航角yaw 俯仰角pitch 滚转角roll等姿态的飞行轨迹 思路 xff1a 同时建立机体坐标系和直角坐标系 xff0c 飞机的所有点
  • 【报错记录】import keras时出现AlreadyExistsError: Another metric with the same name already exists.

    AlreadyExistsError Another metric with the same name already exists AlreadyExistError 已存在另一个同名度量 keras版本与tensorflow版本不对应
  • vscode 选择python解释器

    当python环境不止一个时 xff0c vscode可以选择指定的python解释器 xff0c 具体为 xff1a vscode设置中打开Command Palette 键入 Python Select Interpreter
  • 统计代码量方法

    文章目录 方法一 xff1a 直接使用正则表达式方法二 xff1a 使用 96 cloc 96 文件2 1 在Windows下使用代码量统计工具 不设置环境变量 设置环境变量 2 2 96 Linux 96 下使用代码量统计工具 方法三 x
  • Makefile教程(掌握这里足够)

    众所周知 xff0c 在Linux环境下进行项目开发那就少了使用make来构建和管理自己的工程 如果想要更加深入的学习 xff0c 我在这里推荐一本书 https www jianguoyun com p DZWKrLIQjKL5Bxi0z
  • Docker:Docker的安装与镜像加速

    文章目录 一 Docker教程1 1 Docker的优点1 2 Docker容器技术和传统虚拟机技术的性能比较1 3 Docker的相关链接 二 Docker的安装2 1 使用官方安装脚本自动安装2 2 使用Docker仓库进行安装 三 D
  • 字节的高低位交换

    文章目录 一 字节的高低位交换1 移位操作2 蝶式交换法3 查表法 一 字节的高低位交换 问题 xff1a 对一字节的数据 xff0c 进行逐个高低位交换 例如0xCF 11001111B 经过0 7 1 6 2 5 3 4对应位置的交换
  • Typora中的emoji图标标签

    转载自 xff1a https www cnblogs com wangjs jacky p 12011208 html People x1f604 smile x1f606 laughing x1f60a blush x1f603 smi
  • [MFC]使用编辑框来设置IP地址

    我们除了使用IP控件来设置控件之外还可以使用编辑框来设置IP xff0c 这样的话 xff0c 就需要来进行判断我们输入的IP是否合法 判断IP地址合法的标准 xff1a 字符串中必须包含3个符号 被符号 分隔的4个字符串的长度必须小于或等