C++基础<03>—标准库string类型

论文学习:Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline title: “Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline” tags: [“论文评述”, “报告”] date: 2019-08-22 author: 叶慧 mathjax: true 论文:Towards Automated Infograph... 阅读详情
标准库string类型

string类型支持长度可变的字符串,C++标准库提供了各种相关操作。

#include <string>
using std::string

一、string对象的定义和初始化

         string标准库支持几个构造函数。构造函数是一个特殊的成员函数,定义如何初始化该类型的对象。如下所示:
//①默认构造函数,s1为空串
string s1;		
//②将s2初始化为s1的一个副本
string s2(s1);
//③将s3初始化为一个字符串字面值副本
string s3("value");
//④将s4初始化为字符'c'的n个副本
string s4(n, 'c');

二、string对象的读写

         在C++基础<1>中,我们了解了IO标准库。同样的,也可以用标准输入输出操作符来读写string对象。
注:① 读取并忽略开头所有的空白字符(如空格,换行符,制表符);
         ② 读取字符直至再次遇到空白符,读取终止。

三、string对象的操作

s.empty() 			//如果s为空串,则返回true,否则返回false
s.size()			//返回s中字符的个数
s[n]				//返回s中位置为n的字符,位置从0开始计数
s1 + s2				//把s1和s2连接成一个新字符串,返回新生成的字符串
s1 = s2     		//把s1内容替换为s2的副本
v1 == v2    		//比较v1与v2的内容,相等则返回true,否则返回false
!=, <, <=, >, >=    //保持这些操作符的含义
size()的返回值类型是 string::size_type ,不要把size的返回值赋值给一个int变量。

string关系操作符
①如果两个string对象长度不同,且短的string对象与长的string对象的前面部分相匹配,则短的string对象小于长的string对象。
②如果两个string对象的字符不同,则比较第一个不匹配的字符。

string对象赋值内部实现:必须先把st1占用的相关内存释放掉,然后再分配给st1足够存放st2副本的内存空间,最后把st2中所有字符复制到新分配的内存空间。

string对象相加
当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。

四、string对象中字符处理

头文件:cctype
isalnum(c)			//如果c是字母或数字,则为true
isalpha(c)			//如果c是字母,则为true
iscntrl(c)			//如果c是控制字符,则为true
isdigit(c)			//如果c是数字,则为true
isgraph(c)			//如果c不是空格,但可打印,则为true
islower(c)			//如果c是小写字母,则为true
isprint(c)			//如果c是可打印的字符,则为true
ispunct(c)			//如果c是标点符号,则为true
isspace(c)			//如果c是空白字符,则为true
isupper(c)			//如果c是大写字母,则为true
isxdigit(c)			//如果c是十六进制数,则为true
tolower(c)			//如果c是大写字母,则返回其小写字母形式,否则直接返回c
toupper(c)			//如果c是小写字母,则返回其大写字母形式,否则直接返回c


PS: 欢迎关注微信公众号:开发者小黑屋,分享优质技术干货。 

这里写图片描述

Ollama系列---【ollama使用gpu运行大模型】 一、安装CudaToolkit 使用控制台命令查看当前显卡驱动中的cuda版本 nvidia-smi 二、下载CudaToolkit 注意:CudaToolkit版本要低于上面的显卡Cuda版本。 Cuda各版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive 下载好之后,一路下一步,一直默认即可。 如果安装到了自定义的位置,记得加环... 阅读详情

相关推荐

二阶高通滤波器硬件设计:5种RC到有源方案对比与选型

在传感器前端和音频信号调理中,二阶高通滤波器是抑制直流偏移与低频干扰的关键模块。其设计核心围绕截止频率、品质因数Q、增益与噪声四个指标展开,其中Q值决定滤波器在转折频率附近的响应形状,如Butterworth最大平坦响应需Q=0.707。从纯无源RC电路到引入运放的有源拓扑,演变逻辑在于解决负载效应、提供增益并借助反馈提升Q值。实际工程中,RC级联、VCVS(Sallen-Key)、状态变量及回转器模拟电感等方案各有适用场景:RC电路简单但Q值受限,Sallen-Key单运放即可实现高Q,状态变量适合Q值独

weixin_32770423的博客 97

C++ string标准库的简单总结

1.构造函数 语法 string(); string( size_type length, char ch ); string( const char *str ); string( const char *str, size_type length ); string( string &str, size_type index, size_type length );

Medlen 1万+

如何用Deep OC-SORT提升多目标跟踪精度?实战配置与性能优化指南

本文是一份针对开发者的Deep OC-SORT多目标跟踪实战指南。详细解析了如何通过部署其核心的“动态外观记忆”与“相机防抖”模块来有效应对遮挡与抖动,从而显著提升跟踪精度与连续性。内容涵盖从环境搭建、参数调优到性能压榨的全流程,并提供针对不同场景的配置建议与工程落地技巧。

f9g0h的博客 670

C++中标准库std::string的实现

以下实现了C++标准模板库中std::string中的部分实现,参考了cplusplus. 关于C++中标准模板库std::string的介绍和用法可以参考: https://blog.youkuaiyun.com/fengbingchun/article/details/62417284   实现代码string.hpp如下: #ifndef FBC_STL_STRING_HPP_ #define ...

网络资源是无限的 8460

MPU6050模块DIY翻车实录:ID能读但数据全为零?原来是这个10uF电容惹的祸

本文详细记录了MPU6050模块调试过程中遇到的ID能读但数据全为零的问题排查过程。通过对比不同参考设计,发现CPOUT引脚10uF电容选择不当是导致数据异常的根源,更换为官方推荐的2.2nF电容后问题解决。文章为硬件开发者提供了宝贵的电路设计经验。

weixin_29158047的博客 319

语音信号的AGC自适应增益调整matlab仿真

语音信号的自动增益控制(Automatic Gain Control,AGC)是音频处理领域中的一项重要技术。其核心功能是实时调整输入信号的幅度,使其保持在一定范围内,以优化输出信号的质量。AGC广泛应用于语音通信、语音识别、音频录制和播放等领域,旨在解决输入信号幅度波动问题,确保输出信号的稳定性和清晰度。一、AGC的基本原理1.1 幅度调整自动增益控制的基本原理是根据输入信号的幅度动态地调整系统的增益。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 918

C++复习 03 标准库类型

声明,所有的朋友,如果要转我的帖子,务必注明"作者:黑啤 来源:优快云博客"和具体的网络地址http://blog.youkuaiyun.com/nx500/archive/2007/10/21/1836173.aspx,并且我的所有博客内容,禁止任何形式的 商业用途,请大家尊重我的劳动.谢谢!目 录三.标准库类型.  001 两种重要的标准库类型是string和vector.说他们重要,是因为它们在C++

nx500的专栏 1250

【OpenClaw企业级智能体实战】第09篇:OpenClaw金融投研实战:17个场景+完整代码,打造专属数字研究员

金融投研面临信息过载、流程重复、数据安全合规三大核心痛点,OpenClaw作为本地部署的新一代AI智能体,凭借“长期记忆+主动执行+数据不出域”的优势,成为券商分析师集体追捧的效率工具。本文基于8家头部券商公开研报,拆解OpenClaw在金融投研的17个核心应用场景(信息处理、研报撰写、量化策略、流程自动化),详解原理、技术选型、实操流程,并提供可直接运行的完整代码与执行结果。文章兼顾新手入门与进阶提升,强调安全隔离部署与幻觉防范,读者可按步骤搭建专属投研智能体,将信息处理、数据整理等重复工作效率提升80%

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 673

【c++】string类---标准库(STL)中的string类

【c++】string类---标准库(STL)中的string类及实现

m0_74722801的博客 1768

智能车图像处理5-入门级分析4 ---环岛的状态机与补线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 8218

DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命

随着人工智能技术蓬勃发展,DeepSeek 在太空探索领域展现出巨大应用潜力。本文深入剖析 DeepSeek 技术核心,包括低功耗运算、开源生态等优势,阐述其与传统航天技术的差异。从航天器自主控制、深空探测、载人航天等关键环节,结合实时轨道调整、故障诊断修复等实例,揭示 DeepSeek 对航天任务效率与安全性的提升作用。同时探讨其应用面临的太空环境适应、伦理安全等挑战,展望技术演进方向及与前沿技术融合前景,展现 DeepSeek 为人类太空探索带来的变革与深远意义。

邓邓子的博客 2256

【c++】STL--string

讲解非常详细,欢迎大家观看!

includeevey的博客 3806

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++ ->Chapter3 标准库类型之string 类型

一、代码:LibType_String.cc 主要熟悉标准库string类型的初始化、定义、常见的操作等。 #include <iostream> #include <cctype> using namespace std; int main () { /*1.define and intilatize a string obje...

diaozoudan9072的博客 126

假人有限元模型

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【C++】:STL——标准模板库介绍 || string类

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

优快云官方认证C/C++研发领域优质创作者 优快云官方2023年成都赛道Top3 第16届蓝桥杯C/C++软件赛四川赛区二等奖 带你玩转C/C++ 数据结构与算法 Linux系统编程/Linux网络编程 MySQL数据库 软件测试开发 2070

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++基础03---string类型

1.1 string类型简介 string类型为C++标准库中的类型,代表一个可变长字符串。 1.2 string类型的用法 1.2.1 定义和初始化string类型对象 int main() { string s1; //默认初始化,此时s1="",即空串 string s2 = "I love China!"; //把字符串I love China!拷贝到s2的一段内存中,不包含末尾的\0 string s3("I love China!"); string s4 =

weixin_42454048的博客 305

C++之string类型详解

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。  C++中对于strinig的定义为:typedef bas

Moxiao__墨箫 969

【C++】string类

string类

2502_90266547的博客 613

C++ Primer 03 标准库类型

1. getline ------ getline(cin, line);//输入一段字符串,以换行符结尾。line不包括换行符。 cin忽略开始的换行符,getline不忽略 2. #include //注意没有.h     #include     using std::string;  //注意与using namespace std的区别     u

QiQi的专栏 542

C++基础知识5 string

1. string类 1.1 C语言中的字符串 2. 标准库中的string类 2.1 string类(了解) 2.2 auto和范围for 2.3 string类的常用接口说明 3. string类对象的访问及遍历操作 4. string类对象的修改操作 5. string类非成员函数 6. vs和g++下string结构的说明 7. string类的模拟实现 8.写时拷贝(了解)

Yusei_0523的博客 885

《C++ Primer》 第03章 [ 标准库类型 ]

第03章:标准库类型        C++还定义了一个内容丰富的抽象数据类型标准库, 如 : string      大小可变的字符串           vector     大小可变的集合           bitset      提供了抽象方法操作位集合 第一节:命名空间using声明 @ 学习摘录024: ——一旦使用了using声明,我们就可以直接引用名字,而不需要再引用

知行天下 553

【C++深入浅出】STL之string用法详解

从本期开始,我们将进入STL的学习。STL(standard template libaray - 标准模板库)是C++标准库的重要组成部分。其不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。本期我们将要来学习一下STL中的string类,对比一下string和我们之前学习的常量字符串有什么区别。本文的重点在于使用,目标是掌握一些string类的常用接口函数并学会如何使用。之后我们会尝试模拟实现一个string类,理解string的底层实现原理。

忆梦初心的博客 4989

【C++】STL容器-string常用接口

(1)构造函数string类对象的常见构造代码示例int main()//1.默认构造string s1;//2.带参构造//3.拷贝构造//4.隐式类型转换//5.字符运行结果!(2) string类对象的容量操作size使用示例size和length的作用是一样的,只是为了适配其他容器,一般使用size//下标+[]i++)empty使用注意。

池央的博客 1233

C++03标准

在C++03中,添加了一些新特性和修复了一些错误,以提供更好的编程体验和更高的代码可移植性。引入了模板特化(template specialization)和偏特化(partial specialization)的概念,允许根据不同类型提供不同的实现。添加了异常规范(exception specification),用于指定函数可能抛出的异常类型。在 头文件中增加了 std::string 类型,提供了更方便的字符串操作。添加了函数重载解析规则,提供了更灵活的函数重载机制。

笔记 698

C++ string模拟实现

既然要模拟实现string底层那就得先理解为什么我写的string和库string里面不会冲突。1 头文件查找路径当我们用双引号""包围头文件时,编译器会首先在当前目录下查找这个头文件。这意味着它会优先找到我们自己定义的头文件(比如string.h),而不是标准库中的头文件。因为标准库的头文件通常在其他系统目录中,所以不会发生冲突。2 避免名字冲突虽然使用双引号包含头文件可以让编译器优先使用我们自定义的头文件,但如果我们在头文件中定义了一个与标准库相同名称的类或函数,仍然可能导致混淆或冲突。

m0_72625526的博客 2717

C++ string类

目录一.STL简介1. 什么是STL2.STL的版本(了解即可)​编辑二.String类 1.认识string类2.string类的常用接口说明2.1构造函数2.2 string类对象的容量操作2.3string类对象的访问及遍历操作 2.5. string类非成员函数2.6 vs和g++下string结构的说明2.6.1 vs下string的结构2.6.2 g++下string的结构3.C++11的小语法(auto关键字和范围for)3.1auto关键字(做类型推导)3.2范围for(遍历方便)4.str

FirstForst的博客 1247

C++ STL03String容器

1. string容器基本概念C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件。String和c风格字符串对比:1.Char*是一个指针,String是一个类string封装了char*,管理这个字符串,是一个char*型的容器。2.String封装了很多实用的成员方法查找find,拷贝copy,删除delete 替换replace,插入insert3.不用考虑内存释放和越界。

weixin_43756295的博客 459
上一篇: C++基础<02>—变量和基本类型
下一篇: C++标准库string类型操作总结
7-sevens
博客等级 码龄10年 259粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值