中文

.h 与 .hpp:有什么区别,应该使用哪一个?

最后更新: 26 Feb, 2026 在编写 C++ 程序时,尤其是大型项目,组织代码到多个文件中对于可读性和维护性至关重要。这通常涉及使用 头文件,其扩展名为 .h 或 .hpp。但这两者有什么区别,应该使用哪一个? 在本文中,我们将拆解 .h 与 .hpp 文件的差异,探讨它们的历史,并提供最佳实践指南。 理解 C++ 中的头文件 头文件包含 声明,如函数、类、常量和宏,您可以在多个源文件中包含它们。这些文件随后在 .cpp(C++ 源)文件中通过 #include 指令引入。 头文件的常见内容 类定义 函数声明 常量定义 宏 模板(在某些情况下) .h 文件 什么是 .h 文件? .h 文件是传统的 头文件,最早在 C 编程语言中广泛使用。它们仍然在 C 和 C++ 项目中用于声明接口。 使用示例: // mathutils.h #ifndef MATHUTILS_H #define MATHUTILS_H int add(int a, int b); int subtract(int a, int b); #endif 优点: 在 C 和 C++ 中都被普遍认可。 适用于同时包含 C 与 C++ 代码的项目。 缺点: 在 C++ 项目中可能导致文件是 C 风格还是 C++ 风格的歧义。 .
六月 10, 2025 · 2 分钟 · Shakeel Faiz

下载示例文件 - PDF、Excel、演示文稿及更多测试用例

最后更新: 26 Feb, 2026 需要用于测试的示例文件吗? 如果您正在寻找用于测试、开发或自动化工作流的可下载示例文件,此资源中心可让您即时获取高质量、真实的文档。每个示例下载文件均旨在帮助开发者、QA 工程师和学习者在无需从头创建虚拟内容的情况下验证功能。 从基础电子表格到详细的 PDF,您所需的一切均可免费下载 - 无需注册,毫不费力。 下载 PDF 测试文件 正在开发 PDF 查看器、转换器或表单处理程序吗?我们精心策划的PDF 测试文件下载栏目提供即用的文档,以验证布局渲染、文本提取等功能。 下载 PDF 示例文件 我们提供结构化的多页文档——因此当您需要下载 PDF 文件示例集以测试软件对各种布局和字体的兼容性时,这里应有尽有。 每个 PDF 下载测试文件都包含真实的数据、批注和表单,以确保准确的测试。如果您的工作流需要快速的测试 PDF 下载文件,只需几秒即可获取。 示例 Excel 与电子表格文件 需要带有公式、表格和图表的电子表格吗?下载 MS-Excel 支持的多种格式的测试数据。 下载电子表格示例文件 此集合包括: .xlsx、.xls 格式,适用于 Microsoft Excel 这些电子表格示例下载文件非常适合测试导入/导出以及公式引擎。 下载示例演示文稿文件 正在自动化 PowerPoint 工作流或构建演示文稿查看器?使用我们的示例下载文件进行幻灯片测试,以验证渲染引擎、动画或导出功能。 下载演示文稿文件 包含的格式: .pptx、.ppt .odp 非常适用于 QA 场景或开发环境,在这些环境中您需要可直接下载的文件来模拟真实的演示文稿。 更多文件格式即将上线 此免费示例下载文件集合持续扩展。我们即将加入以下内容: Word 文档:.docx、.odt 图像格式:.png、.jpg、.svg 电子书:.epub、.mobi 文本和数据:.json、.xml、.txt 我们的目标是让您更轻松地在开发和文档处理常用的每种格式中下载示例文件。 为什么使用这些示例下载文件? 完全免费且随时可获取 - 无需账户 适用于开发者、测试人员和培训师 专为手动和自动化测试设计 定期添加新格式 节省时间并提升生产力 立即获取文件 PDF 测试文件 Excel/电子表格文件 演示文稿示例 最后思考 无论您是在测试文件兼容性还是构建文档处理功能,拥有合适的示例下载文件都能让工作更轻松、更快捷。从 PDF 测试文件下载资源到 Excel 表格和幻灯片,这个不断增长的库帮助您省去繁琐工作,直接开始测试。
四月 24, 2025 · 1 分钟 · Shakeel Faiz

是否应该将您的 RAW 文件转换为 DNG?RAW 与 DNG:您需要了解的要点

最近更新: 26 Feb, 2026 作为摄影师,您经常需要在保留原始格式的 RAW 文件(例如 CR2、ARW)或将其转换为更通用的格式,如 DNG(数字负片) 之间做出选择。这个决定可能让人感到不知所措,尤其是当您刚入门且不完全了解权衡因素时。本文将探讨在决定是坚持使用相机原生 RAW 文件还是转换为 DNG 时需要考虑的关键因素。 保持 RAW 文件的理由 许多摄影师,尤其是那些重视相机原始、未修改数据的摄影师,倾向于将 RAW 文件保留为原生格式。RAW 文件,如 CR2(佳能) 和 ARW(索尼),提供最高的质量和最大的后期处理灵活性。这些格式包含所有未处理的图像数据,允许对曝光、白平衡以及图像的其他关键要素进行精确调整。 多位摄影师建议保持 RAW 文件完整,包括那些使用过老款相机的摄影师。例如,15 年前拍摄的佳能 DSLR 的 CR2 文件今天仍然同样可用,因为许多程序对旧相机格式具有向后兼容性。 此外,当您将 RAW 转换为 DNG 时,通常会丢弃元数据、专有的相机设置,甚至相机品牌的特定色彩配置文件,这可能导致图像质量出现细微但可察觉的差异。一些用户甚至报告说,转换为 DNG 会影响颜色,而原始 RAW 文件的颜色更为鲜艳。 那么 DNG 呢? 另一方面,DNG 也有其优势。它是一种开放的、非专有的格式,有人认为这使其在长期存储方面更安全。由于 DNG 在多种编辑软件中得到更广泛的支持,它相较于像 CR2 和 ARW 这样的专有 RAW 格式可以提供更高的兼容性。一些档案机构,如美国国会图书馆,推荐 DNG 作为长期保存图像的稳定格式。 如果您使用 Adobe Lightroom 或 Camera Raw 等软件,DNG 在减小文件大小和确保未来访问的更高稳定性方面尤其有用。它还支持无损压缩,并且可以嵌入原始 RAW 文件,以提供额外的安心保障。 然而,也存在一些注意事项。例如,将 RAW 文件转换为 DNG 会移除低分辨率的嵌入式 JPEG 预览,该预览通常更亮且更饱和。如果您已经习惯了相机 RAW 文件显示的丰富多彩的预览,可能会发现 DNG 的预览更暗且不够鲜艳。
四月 21, 2025 · 1 分钟 · Shakeel Faiz

WAV 文件格式规范:您需要了解的一切

最后更新: 16 Apr, 2025 如果您正在处理数字音频,了解 WAV 文件格式规范 至关重要。WAV,全称 Waveform Audio File Format,是存储原始未压缩音频数据的最流行格式之一。在本文中,我们将拆解 WAV 文件格式 是什么、它的技术规格,以及它为何对音频专业人士和爱好者同样重要。 什么是 WAV 文件? WAV 文件是一种由 Microsoft 和 IBM 于 1991 年开发的音频文件格式。它基于 RIFF(资源互换文件格式) 结构,以标记的 “块”(chunks)方式存储数据。WAV 文件因通常包含 未压缩 PCM(脉冲编码调制) 音频而以高音质著称。 WAV 的突出特点 高音频保真度:无损、未压缩格式 支持多声道(单声道、立体声及更高声道数) 与大多数操作系统和音频编辑软件兼容 简单且可扩展的格式,可包含元数据 什么是 WAV 文件格式规范? WAV 文件格式规范 是一份技术蓝图,定义了音频数据在 WAV 文件中的组织和存储方式。它使用 RIFF 格式,并包含多个关键数据块,以实现高质量的音频存储。 RIFF 头在 WAV 文件中的作用是什么? RIFF 头至关重要,因为它标识文件为 WAV 文件并指定数据的结构和大小。它确保软件和音频播放器能够正确读取和解释该文件。 WAV 规范的核心组件 要理解 WAV 文件格式规范,需要仔细查看其结构。典型的 WAV 文件包含若干重要块: 1. RIFF 头 标识符:“RIFF” 文件大小:整体文件大小减去 8 字节 文件类型:“WAVE” 2.
四月 2, 2025 · 2 分钟 · Shakeel Faiz

什么是 DOCX 文件及其与 DOC 的区别?

最后更新: 2025年4月9日 DOCX 文件 是 Microsoft Word 使用的一种文档格式,是 Office Open XML (OOXML) 规范的一部分。DOC 是 Office 2007 之前使用的旧的二进制文件格式。与之相比,DOCX 更小、更安全,并支持高级功能。 请查看我们的详细指南:DOC 和 DOCX 的区别 什么是 DOCX 文件? DOCX 文件 是 Microsoft Word 用于存储文本、图像、表格和其他格式元素的文档文件格式。它于 Microsoft Office 2007 推出,是 Word 文档的默认文件格式,并且是 Office Open XML (OOXML) 标准的一部分。DOCX 文件在各个平台上得到广泛支持,使其成为创建和共享文档的可靠选择。 与基于二进制的旧 DOC 格式相比,DOCX 文件是基于 XML 结构构建的。此更改允许更好的压缩、改进的兼容性和在文件损坏时更容易恢复文件。 DOCX 文件的突出之处 轻量和压缩: DOCX 文件使用 ZIP 压缩,因此与 DOC 文件相比,尺寸更小,节省存储空间并加速文件传输。 丰富的格式选项: DOCX 支持高级格式功能,如样式、主题、表格、图像、图表和嵌入对象,使用户能够创建专业外观的文档。 跨平台兼容性: DOCX 文件可以在包括 Google Docs、LibreOffice 和 Apple Pages 等各种应用程序中打开和编辑,确保在多种设备和操作系统上的可访问性。
三月 26, 2025 · 1 分钟 · Shakeel Faiz

什么是 XML:全面指南

最后更新: 2025年3月25日 什么是 XML? XML(可扩展标记语言) 是一种用于存储、传输和重建数据的标记语言和文件格式。它提供了一种结构化的方法来编码信息,使其既可被人类读取,也可被机器读取。 XML 的主要特性 1. 由开放标准定义 由 万维网联盟(W3C) 于1998年根据 XML 1.0规范 建立。 遵循严格的规则以保证数据结构化且易于解释。 2. 设计目标 XML 的设计着重于在不同平台上的简洁性、普遍性和可用性。 采用基于文本的格式,便于阅读和编辑。 3. 支持 Unicode XML 支持 Unicode,允许存储和处理多语言文本。 4. 适用性 最初为文档创建,现在 XML 被广泛用于各个领域的数据表示,包括网络服务、API 和配置文件。 5. 模式和 API XML 结构可以使用文档类型定义(DTD)、 XML 架构(XSD) 或 Relax NG 来定义。 各种 API,如 DOM(文档对象模型) 和 SAX(简单 API for XML),支持 XML 处理。 6. XML 的常见用途 不同系统之间的数据交换(如网络服务、API)。 软件应用中的配置文件。 存储结构化信息(如 RSS 提要、SVG 图形、文档格式如 DOCX)。 网络开发(如 XHTML、SOAP、基于 AJAX 的应用)。 XML 概述 1.
三月 25, 2025 · 3 分钟 · Shakeel Faiz

适用于 Python、Java 和 JavaScript 的最佳 XML 解析器(附示例)

最后更新: 2025 年 3 月 25 日 XML(可扩展标记语言) 广泛用于数据存储、配置文件和 web 服务。高效解析 XML 对于处理结构化数据的开发者来说至关重要。本文将探索适用于 Python、Java 和 JavaScript 的最佳 XML 解析器,并为每种语言提供示例。 1. 在 Python 中解析 XML Python 提供了多种库来解析 XML 文件,每种都有其适用的用例。 1.1 xml.etree.ElementTree(内置库) xml.etree.ElementTree 是一个简单且高效的内置模块,用于解析 XML。 示例:解析 XML 文件 优点: 轻量且易于使用。 缺点: 在处理复杂 XML 结构时功能有限。 1.2 lxml(快速且功能丰富) lxml 是一个强大的库,基于 libxml2 C 库,提供速度和 XPath 支持。 示例:使用 lxml 解析 优点: 比 ElementTree 更快,支持 XPath。 缺点: 需要安装(pip install lxml)。 1.3 BeautifulSoup(最适合网页抓取) BeautifulSoup 主要用于 解析 HTML,但也支持 XML。
三月 21, 2025 · 2 分钟 · Shakeel Faiz

如何用 Python、Java 和 JavaScript 读取和编辑 XML 文件

最后更新:2025年3月25日 XML (可扩展标记语言) 被广泛用于存储和传输数据。无论您是初学者还是经验丰富的开发者,了解如何读取和编辑 XML 文件都是必不可少的。在本指南中,我们将介绍高效处理 XML 文件的基本和高级方法。 理解 XML 结构 一个 XML 文件由元素、属性和层次结构数据组成。以下是一个简单的 XML 示例: 读取 XML 文件 1. 使用 Python Python 的 xml.etree.ElementTree 模块允许简便地解析 XML。 xml.etree.ElementTree 是 Python 的内置模块,这意味着您无需单独安装它。它与 Python 一同预装,提供用于解析、修改和创建 XML 数据的便捷工具。 代码解析 这个 Python 脚本使用 xml.etree.ElementTree 来解析一个 XML 文件(books.xml)。它检索所有 元素,提取它们的、<author> 和 <price> 值,并打印出来。这使得结构化的 XML 数据读取变得更容易。 2. 使用 Java Java 提供 javax.xml.parsers 用于处理 XML。 javax.xml.parsers 是一个 Java 内置包,提供用于使用 DOM(文档对象模型)和 SAX(简单 API for XML)解析器解析 XML 的类。它被包含在 Java 标准库中,所以无需额外安装即可使用。 </section> <footer class="entry-footer"><span title='2025-03-20 00:00:00 +0000 UTC'>三月 20, 2025</span> · 1 分钟 · Shakeel Faiz</footer> <a class="entry-link" aria-label="post link to 如何用 Python、Java 和 JavaScript 读取和编辑 XML 文件" href="https://blog.fileformat.com/zh/programming/how-to-read-and-edit-xml-files-in-python-java-and-javascript/"></a> </article> <article class="post-entry"> <header class="entry-header"> <h2>阅读和编辑XML文件的新手指南 </h2> </header> <section class="entry-content-home"> 最后更新: 2025年3月25日 为什么学习XML编辑? XML (可扩展标记语言) 广泛用于软件应用程序、Web服务和配置文件中的数据存储和传输。然而,许多人在正确打开或修改XML文件时遇到困难。本指南将帮助初学者和开发人员学习如何高效地读取、编辑、验证和格式化XML文件。 打开XML文件的工具 1. 记事本 (Windows内置编辑器) 右键单击XML文件,选择 打开方式 > 记事本。 适用于快速编辑,但缺乏语法高亮功能。 2. Visual Studio Code (VS Code) 免费、轻量且功能丰富的代码编辑器。 提供语法高亮、自动格式化和XML验证扩展功能。 3. Microsoft Excel 能以结构化表格形式打开XML。 导航到 文件 > 打开 > 浏览,选择XML文件,然后选择 作为XML表格。 4. 在线XML编辑器 网站如 CodeBeautify、XMLGrid 和 XMLViewer 允许查看和编辑XML而无需安装软件。 适用于快速检查和格式化。 编辑XML:语法规则和最佳实践 遵循正确的标签结构 每个开始标签都必须有对应的结束标签。 <person> <name>John Doe</name> </person> 使用有意义的标签名 除非必要,避免使用诸如<item>或<data>这样的一般性标签。 确保嵌套正确 不正确的示例: <parent> <child1> <child2></child2> </child1> </parent> 正确的示例: <parent> <child1> <child2></child2> </child1> </parent> 转义特殊字符 使用<代表<,>代表>,&代表&。 使用XSD(XML模式定义)验证XML XML验证通过使用XSD文件定义规则来确保数据的完整性。 验证XML的步骤: 创建一个XSD文件(定义XML结构) </section> <footer class="entry-footer"><span title='2025-03-19 00:00:00 +0000 UTC'>三月 19, 2025</span> · 1 分钟 · Shakeel Faiz</footer> <a class="entry-link" aria-label="post link to 阅读和编辑XML文件的新手指南" href="https://blog.fileformat.com/zh/web/a-beginner-guide-to-reading-and-editing-xml-files/"></a> </article> <article class="post-entry"> <header class="entry-header"> <h2>Minecraft 与 MCPACK 文件 </h2> </header> <section class="entry-content-home"> 最后更新: 2025年2月27日 什么是 Minecraft? Minecraft 是一款全球公认的沙盒游戏,提供无与伦比的创作自由,让玩家可以在程序生成的世界中探索、建造和生存。自2009年测试版发布和2011年正式发布以来,Minecraft 已成为有史以来最畅销的视频游戏,销量超过3亿份。其开放式的游戏玩法、模组功能和社区驱动的内容都促进了其持久的成功。其中一个使 Minecraft 实现自定义的关键组件是 MCPACK 文件格式,它允许玩家修改游戏内的纹理、声音和行为。 Minecraft 的开放性 Minecraft 的独特之处在于其并没有强制性的目标,允许玩家自己定义游戏目标。虽然游戏包含一个可选的成就系统,但核心体验围绕在通过方块建造采集资源、制作物品和建造复杂建筑上。玩家与一个由不同生物群系组成的扩展、程序化生成的世界互动,包括森林、沙漠、丛林和山地。 游戏最值得注意的特性之一是 红石,这是一种材料,允许玩家创建复杂的电路、自动化机械和逻辑门。这些使得游戏内出现了计算机、计算器和简单的人工智能形式,展示了 Minecraft 的深度和灵活性。 游戏模式 Minecraft 提供不同的游戏模式以满足各种玩法风格。 生存模式 在生存模式中,玩家必须收集自然资源如木材和石头以制作工具、建造避难所,并从黑暗区域生成的敌对生物中保护自己。该模式设有一个健康条和一个饥饿条,要求玩家管理食物供应以维持健康。 玩家可以通过采矿、冶炼、繁殖动物和战斗等活动获得经验值。这些经验值可以用来附魔工具、武器和盔甲,提高它们的耐久性和效能。 当玩家死亡时,他们会掉落物品,这些物品可以在5分钟内被取回,否则会消失。重生点默认为世界生成点,但可以通过床或重生锚进行调整。 生存模式有两种变体: 硬核模式:类似于生存,但具有永久死亡——玩家死亡后无法重生,必须删除世界或以旁观者身份进行游戏。 冒险模式:专为自定义地图设计,此模式限制玩家直接修改世界,要求他们遵循地图制作者设定的预定义规则。 创造模式 在创造模式中,玩家可以无限制地获取所有物品,并即时放置或移除方块。玩家可以自由飞行,不受伤害或饥饿威胁,使此模式特别适合于大型项目的建造、测试机制和红石装置的实验。 MCPACK 文件在生存和创造模式中都扮演着关键角色,因为它们允许玩家修改纹理、声音和游戏机制,以创造符合他们偏好风格的自定义体验。 玩家自定义:皮肤和 MCPACK 文件 新的 Minecraft 玩家会随机分配一个默认皮肤,共有九种选项,包括标志性的 Steve 和 Alex 模型。然而,Minecraft 最受欢迎的特性之一就是自定义皮肤的能力。玩家可以创造并上传自己的角色设计,替换默认纹理为个性化的版本。 这些自定义皮肤通常以 PNG 格式 存储,但当其打包成资源包时,它们格式化为 MCPACK 文件。MCPACK 格式是一种压缩包,包含自定义资源如: 角色皮肤(玩家和生物的自定义外观) 纹理(对方块、物品和用户界面元素的修改) 声音(自定义背景音乐、音效或语音包) Minecraft 中的生物:被动、中立和敌对实体 生物(简称移动实体)为 Minecraft 的世界带来了生机,种类不同的生物对游戏玩法产生不同的影响。这些生物包括: 被动生物(友好且对资源有用):牛、猪、鸡和羊提供食物、羊毛和皮革。 敌对生物(攻击玩家):僵尸、骷髅、蜘蛛、女巫和臭名昭著的苦力怕,其接近玩家时会自爆。 中立生物(未被激怒时非敌对):末影人、狼和猪灵。末影人具有可以瞬移和搬运方块的独特性,让其成为游戏中最有趣的生物之一。 某些敌对生物如僵尸和骷髅在阳光下会燃烧,除非受到头盔保护或站在水中。还有一些特殊的生物变体,如尸壳(免疫阳光的沙漠僵尸)和溺尸(生活在海洋和河流中的僵尸)。 使用 MCPACK 文件修改生物和纹理 MCPACK 文件是 Minecraft 自定义系统的重要组成部分。玩家和开发者使用它们创建自定义资源包以修改游戏内的视觉、声音甚至行为。通过 MCPACK 文件,玩家可以: </section> <footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>二月 27, 2025</span> · 1 分钟 · Shakeel Faiz</footer> <a class="entry-link" aria-label="post link to Minecraft 与 MCPACK 文件" href="https://blog.fileformat.com/zh/game/minecraft-and-mcpack-files/"></a> </article> <footer class="page-footer"> <nav class="pagination"> <a class="prev" href="https://blog.fileformat.com/zh/fileformat.blog/page/4/">« 上一页</a> <a class="next" href="https://blog.fileformat.com/zh/fileformat.blog/page/6/">下一页 »</a> </nav> </footer> </main> <footer class="footer"> </footer> <a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor"> <path d="M12 6H0l6-6z" /> </svg> </a> <script> (function(i, s, o, g, r, a, m) {i['ContainerizeMenuObject'] = r; i[r] = i[r] || function() {(i[r].q = i[r].q || []).push(arguments)}, i[r].l = 1 * new Date(); a = s.createElement(o),m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.append(a)})(window, document, 'script', 'https://menu.containerize.com/scripts/engine.min.js?v=1.0.1', 'fileformat-zh'); </script> <script> let menu = document.getElementById('menu') if (menu) { menu.scrollLeft = localStorage.getItem("menu-scroll-position"); menu.onscroll = function () { localStorage.setItem("menu-scroll-position", menu.scrollLeft); } } document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener("click", function (e) { e.preventDefault(); var id = this.getAttribute("href").substr(1); if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({ behavior: "smooth" }); } else { document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView(); } if (id === "top") { history.replaceState(null, null, " "); } else { history.pushState(null, null, `#${id}`); } }); }); </script> <script> var mybutton = document.getElementById("top-link"); window.onscroll = function () { if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) { mybutton.style.visibility = "visible"; mybutton.style.opacity = "1"; } else { mybutton.style.visibility = "hidden"; mybutton.style.opacity = "0"; } }; </script> <script> document.getElementById("theme-toggle").addEventListener("click", () => { if (document.body.className.includes("dark")) { document.body.classList.remove('dark'); localStorage.setItem("pref-theme", 'light'); } else { document.body.classList.add('dark'); localStorage.setItem("pref-theme", 'dark'); } }) </script> </body> </html>