cpp2md.py

import sys
from pathlib import Path


def read_cpp(file_path):
    try:
        return file_path.read_text(encoding="utf-8")
    except UnicodeDecodeError:
        return file_path.read_text(encoding="gbk")


def cpp_to_md(cpp_file, output_dir):
    code = read_cpp(cpp_file)

    md_content = (
        f"# {cpp_file.stem}\n\n"
        "```cpp\n"
        f"{code}\n"
        "```\n"
    )

    md_file = output_dir / f"{cpp_file.stem}.md"
    md_file.write_text(md_content, encoding="utf-8")

    print(f"已生成: {md_file.name}")


if len(sys.argv) != 2:
    print("用法:")
    print("python cpp2md.py <cpp文件或文件夹>")
    sys.exit(1)

target = Path(sys.argv[1])

if not target.exists():
    print("路径不存在")
    sys.exit(1)

desktop = Path.home() / "Desktop"
output_dir = desktop / "cpp2md_output"
output_dir.mkdir(exist_ok=True)

# 单文件
if target.is_file():

    if target.suffix.lower() != ".cpp":
        print("不是cpp文件")
        sys.exit(1)

    cpp_to_md(target, output_dir)

# 文件夹
elif target.is_dir():

    cpp_files = list(target.glob("*.cpp"))

    if not cpp_files:
        print("该目录下没有cpp文件")
        sys.exit(1)

    for cpp_file in cpp_files:
        cpp_to_md(cpp_file, output_dir)

    print(f"\n共转换 {len(cpp_files)} 个文件")

else:
    print("未知路径类型")