当前位置: 首页 > news >正文

C++语言学习(5): cppreference 介绍和离线文档

1. 绕不开的 cppreference

当你遇到不太熟悉的 C++ 语法,你大概率会去谷歌搜索,进而找到 cppreference.com 这个网站。

cppreference 并不是 C++ 标准委员会维护的,而是从2000年起,一群 C++ 爱好者发起和维护的, 通过网页上的广告提供盈利。 既然如此,为什么不直接看 C++ 标准委员会写的标准文档?

第一个原因:标准文档在 ISO 网站,要付费购买。

第二个原因:即使拿到了免费文档,例如 C++11 对应到 C++11 Working Draft N3337 - pdf (位于 open-std.org 网站),但是内容过于枯燥,大部分人不会“通过读字典来学习”。感受一下:在这里插入图片描述
最终,我们来到了说人话的 cppreference.com 网站:
在这里插入图片描述

2. 获取 cppreference 离线文档

在线文档受制于网络,包括家里网络不好、网站被 rust 吹攻陷等情况,在本地下载查看离线文档是更好的方式。

页面 https://en.cppreference.com/w/Cppreference:Archives 给出了下载方式,

也可以自行从如下 git 仓库的 release 页面获取(它们都是从网站扒拉内容下来,原始内容其实是注册用户以 MediaWiki 形式编辑的)

  • https://github.com/PeterFeicht/cppreference-doc(新,最近有维护)
  • https://github.com/p12tic/cppreference-doc (原,5年没维护)

例如:
https://github.com/PeterFeicht/cppreference-doc/releases/tag/v20240610

在这里插入图片描述
本地解压后,打开 html-book-20240610/reference/en/index.html 即可查看离线文档:
在这里插入图片描述

3. 制作离线文档的 macOS app

上一步得到 html 文档可以直接用了,这一步则是把 html 文档的 index.html 作为应用程序,使得可以从 launchpad 快速启动文档。

为了在 launchpad 里显示图标,需要准备 .svg 图像并转为 png, 再转为 .icns:

brew install svg2png

获取 cpp.svg:
https://worldvectorlogo.com/logo/c

用脚本转为 icns:

#!/bin/bash
function svg_to_icns(){local RESOLUTIONS=(16,16x1632,16x16@2x32,32x3264,32x32@2x128,128x128256,128x128@2x256,256x256512,256x256@2x512,512x5121024,512x512@2x)for SVG in $@; doBASE=$(basename "$SVG" | sed 's/\.[^\.]*$//')ICONSET="$BASE.iconset"ICONSET_DIR="./icons/$ICONSET"mkdir -p "$ICONSET_DIR"for RES in ${RESOLUTIONS[@]}; doSIZE=$(echo $RES | cut -d, -f1)LABEL=$(echo $RES | cut -d, -f2)svg2png -w $SIZE -h $SIZE "$SVG" "$ICONSET_DIR"/icon_$LABEL.pngdoneiconutil -c icns "$ICONSET_DIR"done
}# download cpp.svg from https://worldvectorlogo.com/logo/c
function make_cpp_icns(){imagedir=~/Documents/cppreference/imagescd $imagedirsvg_to_icns cpp.svgcd -
}make_cpp_icns

在这里插入图片描述

最后,是制作 App 的脚本,用到了刚刚做好的 .icns

#!/bin/bash# This script generates /Application/Cppreference.app, which can be searched in launchpad
# You should have already downloaed cppreference HTML document from https://github.com/PeterFeicht/cppreference-doc/releasesmkdir -p ~/Applications/Cppreference.app/Contents/MacOS
mkdir -p ~/Applications/Cppreference.app/Contents/Resourcescat <<EOF > ~/Applications/Cppreference.app/Contents/MacOS/Cppreference
#!/bin/bash
open /Users/zz/Documents/cppreference/html-book-20240610/reference/en/index.html
EOFchmod +x ~/Applications/Cppreference.app/Contents/MacOS/Cppreferencecat <<EOF > ~/Applications/Cppreference.app/Contents/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>CFBundleExecutable</key><string>Cppreference</string><key>CFBundleIdentifier</key><string>com.cppreference.en</string><key>CFBundleName</key><string>Cppreference</string><key>CFBundleVersion</key><string>20240610</string><key>CFBundlePackageType</key><string>APPL</string><key>CFBundleIconFile</key><string>cpp</string>
</dict>
</plist>
EOF# download cpp.svg from https://worldvectorlogo.com/logo/c
cp ~/Documents/cppreference/images/icons/cpp.icns ~/Applications/Cppreference.app/Contents/Resources/rm -rf /Applications/Cppreference.app
mv ~/Applications/Cppreference.app /Applications/

效果:
在这里插入图片描述

4. 总结

本文介绍了 cppreference 网站概况, 以及获取离线文档、制作为 macOS 应用程序的步骤,可用于日常 cpp 开发时加快文档的检索。


http://www.mrgr.cn/news/41157.html

相关文章:

  • 基础算法之双指针--Java实现(下)--LeetCode题解:有效三角形的个数-查找总价格为目标值的两个商品-三数之和-四数之和
  • JavaScript(js)获取网页的图标地址
  • 【Nacos架构 原理】内核设计之Nacos寻址机制
  • 师生健康信息管理:SpringBoot技术突破
  • 滚雪球学Oracle[4.2讲]:PL/SQL基础语法
  • Matlab语言基础教程笔记
  • 两种并行控制OLED屏幕的电路方法6080和8080(SH1107)
  • 加油吧,仅有23家ICT科技类公司入围2024中国企业500强
  • 二分查找算法
  • 【Linux】解锁磁盘文件奥秘,高效数据管理的实战技巧
  • Proxmox使用tc给虚拟机限速,实现不对等网速——浪浪云
  • 习题4-选择结构程序设计
  • 让 Python 对你说谎:创造不真实的数据和响应
  • 如何使用工具删除 iPhone 上的图片背景
  • 医院体检管理系统小程序的设计
  • 两个月冲刺软考——网络与信息安全知识
  • CSS基础
  • 【AI知识点】余弦相似度(Cosine Similarity)
  • 陶瓷4D打印有挑战,水凝胶助力新突破,复杂结构轻松造
  • spring loCDI 详解