OCR+AI双引擎驱动:手把手教学构建智能财报分析系统

article/2025/8/15 1:26:52

在金融行业中,财报分析是帮助企业和投资者做出决策的关键环节。随着科技的快速发展,自动化、智能化的财报分析变得越来越重要。传统的人工财报分析不仅费时费力,而且容易受到人为错误的影响,因此企业急需借助先进的技术来提高效率和准确性。TextIn平台与DeepSeek R1 API 的结合,提供了一种高效、智能的财报分析解决方案,极大地提高了财报处理的自动化水平,助力企业做出精准决策。


一、TextIn的精准文档OCR解析技术

1. TextIn平台介绍

TextIn平台是一款基于OCR(光学字符识别)技术的智能文档解析工具,能够高效提取文档中的结构化数据。特别是在财报分析中,TextIn的OCR技术能够精准识别财务报表中的表格和文本,并将其转换为可处理的Markdown格式。这样,企业不仅可以避免人工输入带来的错误,还可以大大提升财报处理的速度和准确性。

2. 王牌功能:通用文档解析

TextIn的通用文档解析功能,特别适用于PDF格式的财报文件,通过高度优化的算法,它可以高效地从扫描的财务报表中提取关键信息。其主要特点包括:

  • 高精度OCR识别:TextIn能够准确识别PDF中的文本内容和表格数据,避免手动录入的繁琐。
  • 结构化数据输出:解析后,TextIn将财报中的表格和数据转化为结构化的Markdown格式,便于进一步处理和分析。

3. API调用通用文档解析接口

我们可以访问合合信息的控制台免费开通API的调用权限。首次开通有1000页额度赠送!

然后我们去通用文档解析的API调试窗口进行调试。

上传测试文件,得到返回结果。

通过通用文档解析功能,TextIn为财务数据的自动提取和后续处理提供了坚实的基础。

欢迎体验文档解析https://cc.co/16YSQ3


二、DeepSeek R1:深度AI分析财务数据

在获取财务数据后,下一步便是进行智能化分析。这正是DeepSeek R1的强项,作为一款基于AI的财务分析工具,DeepSeek能够基于提取的数据自动进行深度分析,识别出财务报表中的关键风险、亮点和估值建议,帮助决策者做出明智的选择。

1. 获取DeepSeek-API的调用凭证

首先,我们要注册DeepSeek,注册完成后,进入API keys控制台创建token。

复制保存API Key

2. 通过API调用DeepSeek大模型

编写Python代码测试调用。

from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")# Round 1
messages = [{"role": "user", "content": "9.11 and 9.8, which is greater?"}]
response = client.chat.completions.create(model="deepseek-reasoner",messages=messages
)reasoning_content = response.choices[0].message.reasoning_content
content = response.choices[0].message.content# Round 2
messages.append({'role': 'assistant', 'content': content})
messages.append({'role': 'user', 'content': "How many Rs are there in the word 'strawberry'?"})
response = client.chat.completions.create(model="deepseek-reasoner",messages=messages
)
# ...

DeepSeek R1通过与合合信息TextIn平台的结合,能够全面处理从财报中提取出来的数据,并生成详细的分析报告。这些报告不仅涵盖了财务风险、业务增长亮点,还提供了估值建议,为投资决策提供了重要参考。


三、TextIn API结合DeepSeek R1的实践用例

1. 文档上传与处理

合合信息TextIn通过其强大的OCR技术,将上传的财务报表(通常为PDF格式)进行识别。用户只需上传财报文件,TextIn会自动将其中的文本和表格数据提取出来,并以Markdown格式输出。此时,财务数据已经被转化为结构化的信息,为后续分析做好了准备。

# 接收文件并保存
file = request.files.get('file')
if not file or not file.filename.lower().endswith('.pdf'):return jsonify(error="请选择正确的PDF文件"), 400
filename = secure_filename(file.filename)
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
file.save(filepath)

2. 财务数据解析与提取

通过调用合合信息TextIn的接口,系统将PDF文件转化为Markdown格式。这个过程将财报中的表格、数据等信息结构化,便于后续分析。

# 调用合合信息TextIn接口进行PDF解析
resp = textin_client.recognize_pdf2md(filepath, {'page_start': 0,'page_count': 1000,  # 设置解析页数为1000页'table_flavor': 'md','parse_mode': 'scan',  # 设置解析模式为scan模式'page_details': 0,  # 不包含页面细节'markdown_details': 1,'apply_document_tree': 1,'dpi': 144  # 分辨率设置为144 dpi
})
financial_data = json.loads(resp.text)['result']['markdown']

3. 财务数据分析与报告生成

一旦数据被成功提取,DeepSeek R1将分析这些数据,并生成详细的财务分析报告。DeepSeek R1不仅仅是一个简单的数据计算工具,它还运用深度学习技术对数据进行上下文分析,识别潜在的财务风险、突出增长亮点和给出估值建议。

# 使用DeepSeek进行AI分析
analysis = deepseek_client.analyze_financials(financial_data)

通过AI分析,DeepSeek R1返回了一份内容丰富、结构清晰的报告,分析报告以Markdown格式展示财务风险、增长亮点和估值建议等内容。

# 结构化分析结果
html_content = convert_markdown_to_html(analysis)

4. 结果展示

生成的分析报告将展示给用户,帮助他们快速了解财报的关键信息。报告中包括:

  • 风险点:DeepSeek R1会自动标记出财报中的主要风险,帮助决策者识别潜在问题。
  • 增长亮点:在报告中突出财务数据中的增长亮点,帮助企业发现未来的业务机会。
  • 估值建议:DeepSeek还会根据财报数据给出估值建议,帮助投资者评估企业的市场价值
<!-- 渲染财报分析结果 -->
<div id="analysisResult"><h3>🚨 三大核心风险点</h3><ol><li><p><strong>净利润增速放缓</strong><br>第三季度归母净利润同比下降3.84%(扣非后-7.84%),与营收增长(+19.48%)背离,显示成本压力(研发、销售费用激增)或市场竞争加剧。</p></li><!-- ... --></ol><hr><h3>💡 三大增长亮点</h3><ol><!-- ... --></ol><hr><h3>📈 估值建议</h3><ol><!-- ... --></ol>
</div>

四、完整案例

1. 案例完整代码

① app.py
# -*- coding: utf-8 -*-# app.py
from flask import Flask, render_template, request, jsonify
import os
import json
from werkzeug.utils import secure_filename
import requests
import pandas as pd
from openai import OpenAI
import logging
from datetime import datetime
import markdown
import redef get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()class TextinOcr(object):def __init__(self, app_id, app_secret):self._app_id = app_idself._app_secret = app_secretself.host = 'https://api.textin.com'def recognize_pdf2md(self, image_path, options, is_url=False):"""pdf to markdown:param options: request params:param image_path: string:param is_url: bool:return: responseoptions = {'pdf_pwd': None,'dpi': 144,  # 设置dpi为144'page_start': 0,'page_count': 1000,  # 设置解析的页数为1000页'apply_document_tree': 0,'markdown_details': 1,'page_details': 0,  # 不包含页面细节信息'table_flavor': 'md','get_image': 'none','parse_mode': 'scan',  # 解析模式设为scan}"""url = self.host + '/ai/service/v1/pdf_to_markdown'headers = {'x-ti-app-id': self._app_id,'x-ti-secret-code': self._app_secret}if is_url:image = image_pathheaders['Content-Type'] = 'text/plain'else:image = get_file_content(image_path)headers['Content-Type'] = 'application/octet-stream'return requests.post(url, data=image, headers=headers, params=options)class FinancialAnalyst:def __init__(self, api_key):self.client = OpenAI(api_key=api_key,base_url="https://api.deepseek.com",)def analyze_financials(self, financial_data):"""执行深度财务分析(使用官方SDK)"""prompt = f"""你是一位顶级证券分析师,请根据以下财务数据进行专业分析: {financial_data}要求用中文输出:1. 三个最重要的风险点(用🚨标记)2. 三个最突出的增长亮点(用💡标记) 3. 估值建议(用📈标记)格式要求:Markdown列表,每个分类最多3条"""try:response = self.client.chat.completions.create(model="deepseek-reasoner",messages=[{"role": "system", "content": "你是拥有20年经验的证监会持牌财务分析师,擅长发现数据背后的商业逻辑"},{"role": "user", "content": prompt}],temperature=0.2,max_tokens=2000)return response.choices[0].message.contentexcept Exception as e:return f"⚠️ 分析失败:{str(e)}"app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = './uploads'
app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024  # 16MB# 初始化API客户端
textin_client = TextinOcr(app_id="971357873**********2bef0f5c",app_secret="2d5b5b6267************dbdde26a0"
)deepseek_client = FinancialAnalyst(api_key="sk-k3k2jeB**********************78XharBWnYAJHneI"
)# 配置日志(在Flask应用初始化后添加)
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',handlers=[logging.FileHandler('financial_analysis.log'),logging.StreamHandler()]
)
logger = logging.getLogger(__name__)@app.route('/')
def index():return render_template('index1.html')@app.route('/analyze', methods=['POST'])
def analyze():start_time = datetime.now()filepath = Nonetry:# ========== 1. 接收文件 ========== logger.info("收到分析请求 | Headers: %s", request.headers)file = request.files.get('file')if not file:logger.error("未接收到文件")return jsonify(error="请选择要上传的文件"), 400if not file.filename.lower().endswith('.pdf'):logger.error("文件类型错误: %s", file.content_type)return jsonify(error="仅支持PDF文件"), 400# ========== 2. 保存文件 ========== filename = secure_filename(file.filename)filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)file.save(filepath)logger.info("文件暂存成功 | 路径: %s | 大小: %dKB", filepath, os.path.getsize(filepath)//1024)# ========== 3. 解析财报 ========== logger.info("开始解析财报...")resp = textin_client.recognize_pdf2md(filepath, {'page_start': 0,'page_count': 1000,  # 设置解析页数为1000页'table_flavor': 'md','parse_mode': 'scan',  # 设置解析模式为scan模式'page_details': 0,  # 不包含页面细节'markdown_details': 1,'apply_document_tree': 1,'dpi': 144  # 分辨率设置为144 dpi})logger.info("request time: %s", resp.elapsed.total_seconds())financial_data = json.loads(resp.text)['result']['markdown']# 记录解析后的财报数据logger.info("原始解析数据: %s", json.dumps(financial_data, indent=2, ensure_ascii=False))# ========== 5. 生成分析报告 ========== logger.info("开始AI分析...")# 获取AI分析结果analysis = deepseek_client.analyze_financials(financial_data)logger.info("分析完成 | 结果长度: %d字符", len(analysis))logger.info("分析完成 | 结果内容: %s", analysis)# 结构化分析内容html_content = convert_markdown_to_html(analysis)result_text = re.sub(r'<think>.*?</think>', '', html_content, flags=re.DOTALL).replace("```markdown", "<br /><hr />")think_text = re.sub(r'```markdown.*?```', '', html_content, flags=re.DOTALL)logger.info(json.dumps(think_text, indent=2, ensure_ascii=False))logger.info(json.dumps(result_text, indent=2, ensure_ascii=False))# ========== 6. 响应结果 ========== duration = (datetime.now() - start_time).total_seconds()logger.info("请求处理完成 | 耗时: %.2fs", duration)return jsonify(html=result_text)except ValueError as ve:logger.error("业务逻辑错误: %s", str(ve), exc_info=True)return jsonify(error=str(ve)), 400except requests.exceptions.RequestException as re:logger.error("API请求异常: %s", str(re), exc_info=True)return jsonify(error="后台服务暂不可用"), 503except Exception as e:logger.critical("未处理异常: %s", str(e), exc_info=True)return jsonify(error="系统内部错误"), 500finally:# 清理临时文件if filepath and os.path.exists(filepath):try:os.remove(filepath)logger.info("已清理临时文件: %s", filepath)except Exception as e:logger.warning("文件清理失败: %s", str(e))def convert_markdown_to_html(markdown_text):# 将 Markdown 转换为 HTMLhtml_content = markdown.markdown(markdown_text)return html_contentif __name__ == '__main__':os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)app.run(debug=True)
② index.html
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head><title>智能财报分析系统</title><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet"><script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.2/echarts.min.js"></script>
</head>
<body>
<div class="container mt-5"><h2 class="mb-4">上市公司财报智能分析</h2><!-- 上传区域 --><div class="card mb-4"><div class="card-body"><input type="file" id="pdfUpload" accept=".pdf" class="form-control"><div id="loading" class="mt-3" style="display:none;"><div class="spinner-border text-primary"></div><span class="ms-2">分析中...</span></div></div></div><!-- 结果显示 --><div id="resultPanel" style="display:none;" class="row"><!-- 左侧分析文本 --><div class="col-md-6"><div class="card mb-4"><div class="card-header">AI分析结论</div><div class="card-body"><div id="textAnalysis" style="white-space: pre-line;"></div></div></div></div><!-- 右侧表格 --><div class="col-md-6"><div class="card"><div class="card-header">财务报表数据</div><div class="card-body"><div id="tablesArea"></div></div></div></div></div>
</div><script>
document.getElementById('pdfUpload').addEventListener('change', function(e) {const file = e.target.files[0];const formData = new FormData();formData.append('file', file);// 显示加载状态document.getElementById('loading').style.display = 'block';document.getElementById('resultPanel').style.display = 'none';fetch('/analyze', {method: 'POST',body: formData}).then(response => response.json()).then(data => {if(data.error) {alert('错误: ' + data.error);return;}// 渲染分析文本document.getElementById('textAnalysis').textContent = data.analysis// 渲染表格renderTables(data.tables)document.getElementById('resultPanel').style.display = 'block';}).finally(() => {document.getElementById('loading').style.display = 'none';});
});function renderTables(tables) {const container = document.getElementById('tablesArea')container.innerHTML = ''// 定义表格样式const tableStyle = `style="width:100%; margin-bottom:2rem; border-collapse:collapse;"`const thStyle = `style="padding:12px; background:#f8f9fa; border:1px solid #dee2e6;"`const tdStyle = `style="padding:12px; border:1px solid #dee2e6; text-align:right;"`// 遍历所有表格类型const tableTypes = {'income_statement': '利润表','balance_sheet': '资产负债表','cash_flow': '现金流量表'}Object.entries(tableTypes).forEach(([key, title]) => {const data = tables[key]if(data.length === 0) return// 创建表格标题const titleEl = document.createElement('h5')titleEl.className = 'mt-4 mb-3 text-primary'titleEl.textContent = titlecontainer.appendChild(titleEl)// 创建表格const table = document.createElement('table')table.className = 'financial-table'table.setAttribute('style', tableStyle)// 处理表头const thead = document.createElement('thead')const headerCells = data[0].split('|').filter(c => c.trim())thead.innerHTML = `<tr>${headerCells.map(c => `<th ${thStyle}>${c.trim()}</th>`).join('')}</tr>`table.appendChild(thead)// 处理表格体const tbody = document.createElement('tbody')data.slice(1).forEach(row => {const cells = row.split('|').filter(c => c.trim())if(cells.length === 0) returnconst tr = document.createElement('tr')tr.innerHTML = cells.map(c => `<td ${tdStyle}>${c.trim().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')}</td>`).join('')tbody.appendChild(tr)})table.appendChild(tbody)container.appendChild(table)container.appendChild(document.createElement('div')).className = 'mb-4' // 添加空行})
}</script>
<style>
.financial-table {margin-bottom: 2rem;
}
.financial-table th {background-color: #f8f9fa;min-width: 120px;
}
.financial-table td {font-family: 'Courier New', monospace;
}
</style>
</body>
</html>

2. 案例运行效果

我们从雪球上下载某软件公式的2024Q3财报,上传到我们的智能分析项目。


五、行业应用案例

1. 金融行业

金融行业对精确的财报分析有着强烈的需求。通过合合信息TextIn与DeepSeek的结合,金融机构能够自动化处理财报文档,并获取AI分析的结果,极大提高了分析效率。无论是用于投资决策还是企业评估,系统都能提供准确、及时的分析报告,帮助决策者抓住市场机会。

2. 制造业

对于制造业企业来说,财报中往往涉及大量的供应链数据、采购订单和合同等文档。通过合合信息TextIn的自动化文档解析与DeepSeek的财务分析,制造业能够迅速获取财报中的核心数据,识别财务风险,并优化资源配置,提高运营效率。


六、总结

合合信息的TextIn与DeepSeek R1的结合,提供了一种全面、自动化的财报分析解决方案。通过自动化文档解析和深度AI分析,企业不仅能够高效提取财务数据,还能精准识别财务中的潜在问题和业务机会。这一智能化的解决方案正在成为金融、制造等行业财报处理的核心工具,助力企业在复杂的市场环境中做出更加明智的决策。


http://www.hkcw.cn/article/bUKtofvvgT.shtml

相关文章

秒杀系统—4.第二版升级优化的技术文档二

大纲 7.秒杀系统的秒杀活动服务实现 (1)数据库表设计 (2)秒杀活动状态机 (3)添加秒杀活动 (4)删除秒杀活动 (5)修改秒杀活动 (6)后台查询秒杀活动 (7)前台查询秒杀活动 (8)查询秒杀商品的销售进度 (9)秒杀活动添加秒杀商品 (10)秒杀活动删除秒杀商品 (11)触发渲染秒…

“苏超”10元门票被炒到500元 散装江苏的足球狂热

端午假期,当全球球迷的目光聚焦在欧冠决赛时,江苏人正为自己的“苏超”联赛沸腾。尽管没有大牌外援和全网转播,但场均上座率接近万人,比赛门票一票难求,这场江苏省内的业余联赛迅速走红。“苏超”有多火?10元的门票被炒到500元,上座率甚至超过了一些职业联赛。实际上,“…

【Leetcode】vector刷题

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 题目链接&#xff1a;136.只出现一…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

【数据结构】手撕AVL树(万字详解)

目录 AVL树的概念为啥要有AVL树&#xff1f;概念 AVL树节点的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左双旋 AVL树的查找AVL树的验证end AVL树的概念 为啥要有AVL树&#xff1f; 在上一章节的二叉搜索树中&#xff0c;我们在插入节点的操作中。有可能一直往一边插…

2024年信息素养大赛 C++小学组初赛 算法创意实践挑战赛 真题详细解析

2024年信息素养大赛初赛C真题解析 选择题&#xff08;共15题&#xff0c;每题5分&#xff0c;共75分&#xff09; 1、运行下列程序段&#xff0c;输出的结果是( ) int n572765; cout <<n/10%10; A、5 B、6 C、4 D、1 答案&#xff1a;B 考点分析&#xff1a;考察…

GPIO子系统层次与数据结构详解

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析&#xff1a;imx_pinctrl_soc_info结构体Pinctrl子系统中c…

深度解析算法之模拟

39.替换所有的问号 题目链接 给你一个仅包含小写英文字母和 ? 字符的字符串 s&#xff0c;请你将所有的 ? 转换为若干小写字母&#xff0c;使最终的字符串不包含任何 连续重复 的字符。 注意&#xff1a;你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外&#…

《数据结构初阶》【顺序栈 + 链式队列 + 循环队列】

《数据结构初阶》【顺序栈 链式队列 循环队列】 前言&#xff1a;什么是栈&#xff1f;栈有哪些实现方式&#xff1f;我们要选择哪种实现方式&#xff1f;--------------------------------什么是队列&#xff1f;队列有哪些实现方式&#xff1f;我们要选择哪种实现方式&…

进阶数据结构: 二叉搜索树

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

本人第一篇CSDN博客~欢迎关注&#xff01; DOA是指Direction Of Arrival&#xff0c;是利用电磁波信号来获取目标或信源相对天线阵列的角度信息的方式&#xff0c;也称测向、空间谱估计。主要应用于雷达、通信、电子对抗和侦察等领域。 一、阵列信号模型 如上图所示&#xff0…

算法效率的钥匙:从大O看复杂度计算

目录 1.数据结构与算法 1.1数据结构介绍 1.2算法介绍 2.算法效率 2.1复杂度 2.1.1时间复杂度 2.1.1.1时间复杂度计算示例1 2.1.1.2时间复杂度计算示例2 2.1.1.3时间复杂度计算示例3 2.1.1.4时间复杂度计算示例4 2.1.1.5时间复杂度计算示例5 2.1.1.6时间复杂度计算示例6…

A*算法详解【附算法代码与运行结果】

算法背景 A*算法是一种在图形平面上&#xff0c;有多个路径中寻找一条从起始点到目标点的最短遍历路径的算法。它属于启发式搜索算法&#xff08;Heuristic Search Algorithm&#xff09;&#xff0c;因为它使用启发式方法来计算图中的节点&#xff0c;从而减少实际计算的节点…

【leetcode】逐层探索:BFS求解最短路的原理与实践

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

七大排序算法深度解析:从原理到代码实现

1.排序 排序算法是计算机科学中最基础的技能之一&#xff0c;无论你是编程新手还是经验丰富的开发者&#xff0c;理解这些算法都能显著提升代码效率。本文将用最简单的方式&#xff0c;带你快速掌握七大经典排序算法的核心原理与实现。 1.1排序概念及其运用 排序是指将一组数据…

Python的情感词典情感分析和情绪计算

一.大连理工中文情感词典 情感分析 (Sentiment Analysis)和情绪分类 (Emotion Classification&#xff09;都是非常重要的文本挖掘手段。情感分析的基本流程如下图所示&#xff0c;通常包括&#xff1a; 自定义爬虫抓取文本信息&#xff1b;使用Jieba工具进行中文分词、词性标…

C++之vector类(超详细)

这节我们来学习一下&#xff0c;C中一个重要的工具——STL&#xff0c;这是C中自带的一个标准库&#xff0c;我们可以直接调用这个库中的函数或者容器&#xff0c;可以使效率大大提升。这节我们介绍STL中的vector。 文章目录 前言 一、标准库类型vector 二、vector的使用 2.…

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

&#x1f4da; 本文主要总结了一些常见的C面试题&#xff0c;主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能&#xff0c;掌握这些内容&#xff0c;基本上就满足C的岗位技能&#xff08;红色标记为重点内容&#xff09;&#xff0c;欢迎大家前来学习指正&…

『C++成长记』string模拟实现

🔥博客主页:小王又困了 📚系列专栏:C++ 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ ​ 目录 一、存储结构 二、默认成员函数 📒2.1构造函数 📒2.2析构函数 📒2.3拷贝构造 📒2.4赋值重载 三、容量操作 📒3.1获取有效字符长度…

多态的使用和原理(c++详解)

一、多态的概念 多态顾名思义就是多种形态&#xff0c;它分为编译时的多态&#xff08;静态多态&#xff09;和运行时的多态&#xff08;动态多态&#xff09;&#xff0c;编译时多态&#xff08;静态多态&#xff09;就是函数重载&#xff0c;模板等&#xff0c;通过不同的参数…