boost库简介(转)

Boost(1):Boost库简介及安装 1. Boost库介绍 Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,在1998年由Beman G.Dawes发起倡议并建立。使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。 Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。大部分Boost库功能的使用之需要包括相应的头文件即可,少数需要连接库。 阅读详情

C++库.

首先,应该先知道boost是一个什么东西,其实这个东西就是一个c++的准标准类库。

那么c++的标准库都有那些,我知道的,也是最近用的最多的,也就是c++的STL(标准模板方法)中的list,vector,map,string什么的。

但最近想试着自已编译一下比特币的源码,才知道原来还有一个boost的库。在网上找了一下,知道了这个类中大概都有一些什么了。

    Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。

    Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。
Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许并鼓励的。
Boost社区建立的初衷之一就是为C++的标准化工作提供可供参考的实现,Boost社区的发起人Dawes本人就是C++标准委员会的成员之一。在Boost库的开发中,Boost社区也在这个方向上取得了丰硕的成果。在送审的C++标准库TR1中,有十个Boost库成为标准库的候选方案。在更新的TR2中,有更多的Boost库被加入到其中。从某种意义上来讲,Boost库成为具有实践意义的准标准库。
可下载Boost C++ Libraries[1]安装boost库。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。里面有许多具有工业强度的库,如graph库。
很多Boost中的库功能堪称对语言功能的扩展,其构造用尽精巧的手法,不要贸然的花费时间研读。Boost另外一面,比如Graph这样的库则是具有工业强度,结构良好,非常值得研读的精品代码,并且也可以放心的在产品代码中多多利用。

按照功能分类的Boost库列表:

按照实现的功能,Boost可为大致归入以下20个分类,在下面的分类中,有些库同时归入几种类别。
1.       字符串和文本处理
a)         Conversion
b)         Format
c)         IOStream
d)         Lexical Cast
e)         Regex
f)          Spirit
g)         String Algo
h)         Tokenizer
i)          Wave
j)          Xpressive
2.       容器
a)         Array
b)         Bimap
c)         Circular Buffer
d)         Disjoint Sets
e)         Dynamic Bitset
f)          GIL
g)         Graph
h)         ICL
i)          Intrusive
j)          Multi-Array
k)         Multi-Index
l)          Pointer Container
m)        Property Map
n)         Property Tree
o)         Unordered
p)         Variant
3.       迭代器
a)         GIL
b)         Graph
c)         Iterators
d)         Operators
e)         Tokenizer
4.       算法
a)         Foreach
b)         GIL
c)         Graph
d)         Min-Max
e)         Range
f)          String Algo
g)         Utility
5.       函数对象和高阶编程
a)         Bind
b)         Function
c)         Functional
d)         Functional/Factory
e)         Functional/Forward
f)          Functional/Hash
g)         Lambda
h)         Member Function
i)          Ref
j)          Result Of
k)         Signals
l)          Signals2
m)        Utility
6.       泛型编程

a)         Call Traits
b)         Concept Check
c)         Enable If
d)         Function Types
e)         GIL
f)          In Place Factory, Typed In Place Factory
g)         Operators
h)         Property Map
i)          Static Assert
j)          Type Traits
7.       模板元编程
a)         Function Types
b)         Fusion
c)         MPL
d)         Proto
e)         Static Assert
f)          Type Traits
8.       预处理元编程

a)         Preprocessors
9.       并发编程
a)         Asio
b)         Interprocess
c)         MPI
d)         Thread
10.   数学和数字
a)         Accumulators
b)         Integer
c)         Interval
d)    Math
e)         Math Common Factor
f)          Math Octonion
g)         Math Quaternion
?           h)        Math/Special Functions
i)          Math/Statistical Distributions
j)          Multi-Array
k)         Numeric Conversion
l)          Operators
m)        Random
n)         Rational
o)         uBLAS
11.   排错和测试
a)         Concept Check
b)         Static Assert
c)         Test
12.   数据结构
a)         Any
b)         Bitmap
c)         Compressed Pair
d)         Fusion
e)         ICL
f)          Multi-Index
g)         Pointer Container
h)         Property Tree
i)          Tuple
j)          Uuid
k)         Variant
13.   图像处理

a)         GIL
14.   输入输出
a)         Asio
b)         Assign
c)         Format
d)         IO State Savers
e)         IOStreams
f)          Program Options
g)         Serialization
15.   跨语言混合编程
a)         Python
16.   内存管理

a)         Pool
b)         Smart Ptr
c)         Utility
17.   解析
a)         Spirit
18.   编程接口
a)         Function
b)         Parameter
19.   杂项
a)         Compressed Pair
b)         Conversion
c)         CRC
d)         Date Time
e)         Exception
f)          Filesystem
g)         Flyweight
h)         Lexical Cast
i)          Meta State Machine
j)          Numeric Conversion
k)         Optional
l)          Polygon
m)        Program Options
n)         Scope Exit
o)         Statechart
p)         Swap
q)         System
r)          Timer
s)         Tribool
t)          Typeof
u)         Units
v)         Utility
w)        Value Initialized
20.   编译器问题的变通方案
a)         Compatibility
b)         Config
Boost中比较有名气的有这么几个库:
Regex
正则表达式库
Spirit
LL parser framework,用C++代码直接表达EBNF
Graph
图组件和算法
Lambda
在调用的地方定义短小匿名的函数对象,很实用的functional功能
concept check
检查泛型编程中的concept
Mpl
用模板实现的元编程框架
Thread
可移植的C++多线程库
Python
把C++类和函数映射到Python之中
Pool
内存池管理
smart_ptr
推荐序
        最近一年我电话面试了数十位 C++ 应聘者,惯用的暖场问题是“工作中使用过 STL 的哪些组件?使用过 Boost 的哪些组件?”。得到的答案大多集中在 vector、map 和  shared_ptr。如果对方是在校学生,我一般会问问 vector 或 map 的内部实现、各种操作的复杂度以及迭代器失效的可能场景。如果是有经验的程序员,我还会追问 shared_ptr 的线程安全性、循环引用的后果及如何避免、weak_ptr 的作用等。如果这些都回答得不错,进一步还可以问问如何实现线程安全的引用计数,如何定制删除动作等等。这些问题让我能迅速辨别对方的 C++ 水平。
我之所以在面试时问到 Boost,是因为其中的许多组件确实可以用于编写可维护的产品代码。Boost 包含近百个程序库,其中不乏具有工程实用价值的佳品。每个人口味与技术背景不一样,对 Boost 的取舍也不一样。就我的个人经验而言,首先可以使用绝对无害的库,例如 noncopyable、scoped_ptr、static_assert 等,这些库的学习和使用都比较简单,容易入手。其次,有些功能自己实现起来并不困难,正好 Boost 里提供了现成的代码,那就不妨一用,比如date_time 和 circular_buffer 等。然后,在新项目中,对于消息传递和资源管理可以考虑采用更加现代的方式,例如用 function/bind 在某些情况下代替虚函数作为库的回调接口、借助shared_ptr实现线程安全的对象回调等等。这二者会影响整个程序的设计思路与风格,需要通盘考虑,如果正确使用智能指针,在现代 C++ 程序里一般不需要出现 delete 语句。最后,对某些性能不佳的库保持警惕,比如 lexical_cast。总之,在项目组成员人人都能理解并运用的基础上,适当引入现成的 Boost 组件,以减少重复劳动,提高生产力。
         Boost 是一个宝库,其中既有可以直接拿来用的代码,也有值得借鉴的设计思路。试举一例:正则表达式库 regex 对线程安全的处理。
早期的 RegEx 类不是线程安全的,它把“正则表达式”和“匹配动作”放到了一个类里边。由于有可变数据,RegEx 的对象不能跨线程使用。如今的 regex 明确地区分了不可变(immutable)与可变(mutable)的数据,前者可以安全地跨线程共享,后者则不行。比如正则表达式本身(basic_regex)与一次匹配的结果(match_results)是不可变的;而匹配动作本身(match_regex)涉及状态更新,是可变的,于是用可重入的函数将其封装起来,不让这些数据泄露给别的线程。正是由于做了这样合理的区分,regex 在正常使用时就不必加锁。
Donald Knuth 在“Coders at Work”一书里表达了这样一个观点:如果程序员的工作就是摆弄参数去调用现成的库,而不知道这些库是如何实现的,那么这份职业就没啥乐趣可言。换句话说,固然我们强调工作中不要重新发明轮子,但是作为一个合格的程序员,应该具备自制轮子的能力。非不能也,是不为也。
         C/C++ 语言的一大特点是其标准库可以用语言自身实现。C 标准库的 strlen、strcpy、strcmp 系列函数是教学与练习的好题材,C++ 标准库的 complex、string、vector 则是类、资源管理、模板编程的绝佳示范。在深入了解 STL 的实现之后,运用 STL 自然手到擒来,并能自动避免一些错误和低效的用法。
对于 Boost 也是如此,为了消除使用时的疑虑,为了用得更顺手,有时我们需要适当了解其内部实现,甚至编写简化版用作对比验证。但是由于 Boost 代码用到了日常应用程序开发中不常见的高级语法和技巧,并且为了跨多个平台和编译器而大量使用了预处理宏,阅读 Boost 源码并不轻松惬意,需要下一番功夫。另一方面,如果沉迷于这些有趣的底层细节而忘了原本要解决什么问题,恐怕就舍本逐末了。
Boost 中的很多库是按泛型编程的范式来设计的,对于熟悉面向对象编程的人而言,或许面临一个思路的转变。比如,你得熟悉泛型编程的那套术语,如concept、model、refinement,才容易读懂 Boost.Threads 的文档中关于各种锁的描述。我想,对于熟悉 STL 设计理念的人而言,这不是什么大问题。
         在某些领域,Boost 不是唯一的选择,也不一定是最好的选择。比如,要生成公式化的源代码,我会首选用脚本语言写一小段代码生成程序,而不用 Boost.Preprocessor;要在 C++ 程序中嵌入领域特定语言,我会首选用 Lua 或其他语言解释器,而不用 Boost.Proto;要用 C++ 程序解析上下文无关文法,我会首选用 ANTLR 来定义词法与语法规则并生成解析器(parser),而不用 Boost.Spirit。总之,使用 Boost 时心态要平和,别较劲去改造 C++ 语言。把它有助于提高生产力的那部分功能充分发挥出来,让项目从中受益才是关键。
         要学习 Boost,除了阅读其官方网站的文档、示例与源码之外,最好能有一本比较全面的中文书在手边随时翻阅。对于不谙英文的开发者,这更是可幸之至。您手上这本《Boost 程序库完全开发指南》是很好的使用指南与参考手册。作者由浅入深地介绍了 Boost 的大部分常用内容,能让读者迅速了解 Boost,并从中找到自己需要的部分。拿到这本书稿之后,我有粗有细地阅读了一遍,总体来看,作者水平很高,也相当务实,对 C++ 和 Boost 的理解与运用很到位,我从这本书学到了不少新知识。为此,我乐于向希望学习 Boost 程序库的开发者推荐这本靠谱的书。
最后发表一下我的看法,其实我还是比较喜欢苹果的Objective-C.因为这里边有很多写的非常好的框架。但是这个东西不是开源库,而只适合在苹果上用。但是这些框架真的很好用。

BOOST库简介,编译 Boost 是一个高度模块化的库,部分模块是完全头文件化的,而其他模块则需要你手动编译并生成库文件。Boost 提供了一个工具叫做 b2(Boost.Build),用来编译 Boost 库和生成 .lib 或 .dll 文件。,大部分的库实现都是通过头文件来提供的,但有些模块(特别是需要编译的模块)会包含源代码,并且需要生成 .lib 或 .dll 库文件后使用S。(例如使用 b2 工具)并生成对应的 .lib 或 .dll 文件,之后在项目中链接这些生成的库文件。(对于静态库和动态库而言)。 阅读详情

相关推荐

Boost库是一个非常流行的C++库,它提供了很多有用的功能

通过使用boost :: diagnostic_information函数捕获boost :: exception,我们能得到附加信息以及其他有用的调试信息。在上面的代码中,我们使用BOOST_THROW_EXCEPTION宏抛出my_exception类型的异常,并添加了一个附加信息,即文件名。此外,我们还捕获了boost :: exception,并使用boost :: diagnostic_information函数打印了异常信息。它允许我们定义自己的异常类型,并在抛出异常时添加附加信息。

CyberNova的博客 224

C++为什么要学习STL和Boost库

就我的个人经验而言,首先可以使用绝对无害的库,例如 noncopyable、scoped_ptr、static_assert 等,这些库的学习和使用都比较简单,容易入手。在某些领域,Boost 不是唯一的选择,也不一定是最好的选择。拿到这本书稿之后,我有粗有细地阅读了一遍,总体来看,作者水平很高,也相当务实,对 C++ 和 Boost 的理解与运用很到位,我从这本书学到了不少新知识。Boost 中的很多库是按泛型编程的范式来设计的,对于熟悉面向对象编程的人而言,或许面临一个思路的转变。非不能也,是不为也。

木牛的博客 1019

C++ boost库教程(一):boost简介

C++ boost零基础教程

琅嬛福地 5万+

深入C++“准”标准库,Boost你的力量

    最近一年我电话面试了数十位 C++ 应聘者,惯用的暖场问题是“工作中使用过 STL 的哪些组件?使用过 Boost 的哪些组件?”。得到的答案大多集中在 vector、map 和 shared_ptr。如果对方是在校学生,我一般会问问 vector 或 map 的内部实现、各种操作的复杂度以及迭代器失效的可能场景。如果是有经验的程序员,我还会追问 shared_ptr 的线程安全性、循环引用的后果及如何避免、weak_ptr 的作用等。如果这些都回答得不错,进一步还可以问问如何实现线程安全的引用计数

博文视点(北京)官方博客 2583

Boost库简介及其编译方法

本文对Boost库进行了简要介绍并提供了编译流程与编译库(debug/release)压缩包。

不要仅为成功而努力,要为做一个有价值的人而努力 1251

Innovus实战:5分钟搞定postRoute阶段冗余hold buffer的自动清理(附PHC识别技巧)

本文分享了在数字IC后端设计中使用Innovus工具,于postRoute阶段自动清理冗余hold buffer的实战技巧。通过配置时序感知的面积回收模式,可在5分钟内安全移除非关键路径上的PHC缓冲器,有效优化芯片面积与功耗,并附有PHC识别与验证方法。

moon9的博客 400

BOOST学习(一)

这段时间开始研究BOOST,它覆盖了广泛的领域,从数学库到智能指针,从模板元编码库到预处理器库,从线程到lambda表达式,等等。所有的Boost库都具有宽松的许可证,确保可以被自由试用于商用软件。10个Boost库已经被c++标准委员会的库技术报告(TR1)收录,作为将来的C++标准库的一部分。更多的Boost库将被建议收入进TR2.所以,从这可以看出,Boost将会是未来的c++的标准,因此,

人的一生应当这样度过:当他回首往事时,不因虚度年华而懊悔,也不因碌碌无为而羞愧! 993

告别手绘!用Aseprite+Unity Tilemap,从AI生成到2D游戏地图的保姆级搭建流程

本文详细介绍了如何利用Aseprite和Unity Tilemap从AI生成素材到搭建2D游戏地图的完整流程。涵盖AI生成素材的预处理、图层管理、动画制作,以及Unity中的Tilemap系统配置和性能优化技巧,帮助开发者高效创建像素风游戏地图。

weixin_29015483的博客 583

【转】C++ Boost库简介

      boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。       boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理

743

关于小样本学习综述论文的总结

对小样本学习综述的个人总结

qq_46176086的博客 5456

科研党必备:用MATLAB批量处理.mat文件数据的3种高效方法

本文为科研人员提供了使用MATLAB批量处理.mat文件数据的三种高效方法,涵盖智能数据加载、专业可视化与自动化报告生成。通过构建自动化框架、多维度数据画图策略及批量处理流程,帮助用户显著提升数据处理效率与图表专业性,解决海量实验数据的管理与分析难题。

weixin_29089057的博客 73

Boost库的简介与安装

一、boost库简介 boost库是一个功能强大,构造精巧,跨平台的免费的C++开源库。它使得C++编程更优雅、更有活力、更高产,C++11的标准有三分之二来自boost库。在boost1.57版本时,就一共包含了129个组件,分为25个大类,涵盖了文本处理,容器,迭代器,算法,图像处理,模板元编程,并发编程等许多领域。 二、boost库的安装 1、boost库的获取方式 可以从boost官网上下载,网址是:http://www.boost.org/。本文使用的boost库是1.57版本,下载下来之

识物专栏 14万+

Fluent验证案例03:管道中湍流流动压降计算——采用kw-sst模型计算压降更为准确。

阅读(4053) 评论(0)本案例利用Fluent计算管道中湍流流动压降。

qq_15963745的博客 877

C++ Boost库:简介和第一个示例程序

文章目录1. 简介2. Boost库开发环境搭建3. 一个简单的示例程序4. hpp文件简介 Highscore - Boost C++ 库 1. 简介 什么是Boost库? Boost库是一个优秀的、可移植、开源的C++库,它由C++标准委员会库工作组成员发起,其中有些内容经常成为下一代C++标准库内容,在C++社区中影响甚大,是不折不扣的“准”标准库。 Boost库是一个开源免费的第三方库,它是一个非常优秀的库,是C++标准的最好实践之一,因此也经常被用于商业的开发。所以,如果你是搞C++的,还没有听过

超级大洋葱的博客 9229

SAP-ABAP:ABAP 开发基础概念入门:写给刚踏入 SAP 开发世界的新人

本文介绍了 ABAP 开发语言的基础概念,帮助 SAP 开发新人快速入门。主要内容包括: ABAP 的发展历程与核心优势 - 作为 SAP 平台的专属语言,ABAP 在企业级应用开发中具有深度集成、数据处理高效和长期稳定的特点 ABAP 开发环境概览 - 介绍了 SE38、SE80 等关键事务码,以及 ABAP 工作台的核心组件和开发权限管理 基础语法入门 - 重点讲解了 ABAP 特有的数据类型体系(特别是结构体和内表),并通过 Hello World 示例展示程序基本结构 文章通过对比 ABAP 与 J

baidu_35680696的博客 511

【2022】人工智能☆✨

1. 朴素⻉叶斯⽅法是⼀种 ( ) ⽅法。A.机器学习的分类B.不确定性推理C.知识表示答案:A解析:朴素贝叶斯分类器是基于贝叶斯定理与特征条件独立假设的分类方法。它通过学习训练数据集来预测未知数据的类别标签,因此属于机器学习中的监督学习分类方法。选项B不确定性推理和选项C知识表示虽然与朴素贝叶斯方法有一定的关联,但它们并不是朴素贝叶斯方法的主要应用领域或定义特性。2. 关于启发式搜索描述正确的是 ( )。

super_mochi1 400

C++ Boost库:windows下编译Boost库

文章目录1. 需要编译的boost库2. 编译步骤3. 库命名规则4. VS配置库目录 1. 需要编译的boost库 通过bjam --show-libraries查看那些库需要编译: D:\Project\VisualStudioProjects\boost_1_67_0>bjam --show-libraries The following libraries require building: - atomic - chrono - container - con

超级大洋葱的博客 1万+

2026年沐曦集成电路数字IC笔试试卷带答案

本文摘要: 这是一份数字IC设计笔试模拟题,包含单选题、波形分析、多选题和代码设计题。重点考察ASIC设计流程(如逻辑综合将RTL转为门级网表)、时序分析(建立时间余量计算)、跨时钟域处理(格雷码应用)、复位机制、状态机设计等核心知识点。涉及沐曦特色考点如GPU架构(SIMT模型)、国产GPU芯片(曦云C系列)及MXMACA软件栈。代码题要求实现50%占空比三分频电路,综合考察Verilog设计能力。试题强调PPA优化、低功耗技术等工程实践要点,覆盖数字IC前端设计全流程核心内容。(149字)

Open 259

【C++】Boost库简介

Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。

后厂村路蔡徐坤的博客 1756

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Boost 简介

您的问题涉及编译库(libboost_system-vc143-mt-gd-x64-1_88.lib 和 libboost_log-vc143-mt-gd-x64-1_88.lib),因此后续会重点讲解编译和配置。针对您的问题(无法生成 libboost_system-vc143-mt-gd-x64-1_88.lib 和 libboost_log-vc143-mt-gd-x64-1_88.lib),提供了详细的编译步骤,强调使用 x64 命令提示符、检查日志、确保依赖完整。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 1387

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Boost库简介及编译

关于boost库boost库是一个功能强大的跨平台的开源c++程序库,boost库是由c++标准委员会成员之一的Beman G.Dawes发起倡议并成立Boost社区,致力于向c++成员提供免费的,经过同行评审的可移植的c++程序库。Boost库强调与c++标准库能够完美配合,致力于既有的实践和提供参考实现,使得Boost库非常适合标准化,目前已经有很多Boost库被包含的TR1库和c++11标准中。

Fei_Liu的博客 1013

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Boost库简介

123

风萧尘的博客 2003
上一篇: android(安卓)cocos2d-x关于防止游戏中锁屏问题
下一篇: 使用cocos2d-iphone和cocos2d-x创建帧动画
woodcol
博客等级 码龄19年 288粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值