Skip to main content
Glama
cpp_standards.py5.48 kB
"""C++ 标准特性资源""" import json from pathlib import Path class CppStandardsResource: """C++ 标准特性资源提供器""" def __init__(self): """加载 C++ 标准特性数据""" data_path = Path(__file__).parent.parent / "data" / "cpp_standards.json" with open(data_path, 'r', encoding='utf-8') as f: self.standards = json.load(f) def get_standard_features(self, version: str) -> str: """ 获取指定 C++ 标准的特性说明 Args: version: 版本名称 (cpp11, cpp14, cpp17, cpp20, cpp23) Returns: 格式化的标准特性文档 """ if version not in self.standards: available = ', '.join(self.standards.keys()) return f"未知的 C++ 标准版本: {version}\n\n可用版本: {available}" standard = self.standards[version] # 构建格式化的文档 doc = f"# {standard['title']}\n\n" doc += "---\n\n" for feature in standard['features']: doc += f"## {feature['name']}\n\n" doc += f"{feature['description']}\n\n" doc += "**示例代码:**\n" doc += "```cpp\n" doc += feature['example'] doc += "\n```\n\n" doc += "---\n\n" # 添加总结和资源 doc += self._get_summary(version) return doc def get_all_standards(self) -> str: """获取所有 C++ 标准的概览""" doc = "# C++ 标准特性演进\n\n" doc += "从 C++11 到 C++23 的主要特性概览\n\n" doc += "---\n\n" for version in ['cpp11', 'cpp14', 'cpp17', 'cpp20', 'cpp23']: if version in self.standards: standard = self.standards[version] doc += f"## {standard['title']}\n\n" doc += f"**特性数量**: {len(standard['features'])}\n\n" doc += "**主要特性**:\n" # 列出前5个特性 for i, feature in enumerate(standard['features'][:5], 1): doc += f"{i}. **{feature['name']}**: {feature['description']}\n" if len(standard['features']) > 5: doc += f"... 还有 {len(standard['features']) - 5} 个特性\n" doc += "\n" doc += "---\n\n" doc += "## 使用方式\n\n" doc += "使用资源 URI: `cpp-style://standard/{version}` 获取详细特性说明\n\n" doc += "例如:\n" doc += "- `cpp-style://standard/cpp11` - C++11 特性\n" doc += "- `cpp-style://standard/cpp17` - C++17 特性\n" doc += "- `cpp-style://standard/cpp20` - C++20 特性\n" return doc def _get_summary(self, version: str) -> str: """获取版本总结""" summaries = { "cpp11": """ ## 💡 C++11 总结 C++11 是现代 C++ 的开端,带来了革命性的变化: **核心改进:** - 更好的内存管理(智能指针) - 更简洁的语法(auto, 范围for, lambda) - 更强的类型安全(nullptr, enum class) - 并发支持(std::thread, std::mutex) - 移动语义提升性能 **学习资源:** - [C++11 FAQ](https://isocpp.org/wiki/faq/cpp11) - [cppreference C++11](https://en.cppreference.com/w/cpp/11) """, "cpp14": """ ## 💡 C++14 总结 C++14 是 C++11 的完善和增强: **主要改进:** - 更灵活的类型推导 - 更强大的 lambda 表达式 - make_unique 补全智能指针工厂函数 - 更好的 constexpr 支持 **升级建议:** 如果使用 C++11,强烈建议升级到 C++14,几乎没有兼容性问题。 **学习资源:** - [C++14 Overview](https://isocpp.org/wiki/faq/cpp14) """, "cpp17": """ ## 💡 C++17 总结 C++17 带来了大量实用特性: **核心特性:** - 结构化绑定简化代码 - std::optional 和 std::variant 增强类型安全 - std::string_view 提升性能 - if constexpr 优化模板代码 - 文件系统库 **适用场景:** C++17 是目前最推荐的生产环境标准,兼顾了现代性和稳定性。 **学习资源:** - [C++17 Features](https://en.cppreference.com/w/cpp/17) - [C++17 in Detail](https://leanpub.com/cpp17) """, "cpp20": """ ## 💡 C++20 总结 C++20 是自 C++11 以来最大的更新: **革命性特性:** - **Concepts**: 约束模板参数,提供清晰的错误信息 - **Ranges**: 函数式编程风格的容器操作 - **Coroutines**: 协程支持异步编程 - **Modules**: 替代头文件系统 - **三路比较**: 简化比较运算符实现 **采用建议:** 编译器支持逐渐成熟,可以在新项目中谨慎使用。 **学习资源:** - [C++20 Overview](https://en.cppreference.com/w/cpp/20) - [C++20 The Big Four](https://www.modernescpp.com/index.php/c-20-the-big-four) """, "cpp23": """ ## 💡 C++23 总结 C++23 继续完善现代 C++: **重要特性:** - std::expected 改善错误处理 - std::print 简化输出 - std::mdspan 多维数组视图 - 更多的 constexpr 支持 **状态:** 标准已发布,编译器支持正在推进中。 **学习资源:** - [C++23 Features](https://en.cppreference.com/w/cpp/23) """ } return summaries.get(version, "") # 全局实例 _resource = None def get_resource() -> CppStandardsResource: """获取全局资源实例""" global _resource if _resource is None: _resource = CppStandardsResource() return _resource

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SongJiangzhou/cpp_guidelines_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server