c++ boost库正则表达式的一些经验

使用正则表达式解析一般sql语句(C++) 趁这个时候把之前写过的代码都贴上来吧。 正则表达式一用,整个人都感觉神清气爽了,会了正则表达式,表示字符串解析什么的,顿时轻松了不少啊。不过C和C++现存的大部分编译器是不支持正则表达式的,最新出来的C++10标准(貌似是C++10)中新加入了正则表达式,但是支持最新标准的编译器较少,VS最新版本的应该是支持的。不过博主一直对CodeBlocks情有独钟,忠心不二啊。这就得给编译器装boost函数 阅读详情

首先,我的匹配设置为:

// 忽略大小写
regex expression( str_pattern ,  boost::regbase::normal|boost::regbase::icase);


如果要匹配的字符串当中含有双引号

比如: acp"abc"dgg ,在c++当中写法如下:

string aa = "acp\"abc\"dgg"; 

要提取当中的abc,那么pattern应该怎么写呢?

找规律发现只要这样写就行:

string pattern = "p\"(.*?)\"d"; 


如果要匹配的字符串当中带有2个空格,acp  "abc"  dgg , 则可以用 +代替(注意前面有一个空格,加号是重复1次或者多次的意思)

string pattern = "p +\"(.*?)\" +d"; 



经过网上查询,boost匹配规则,注意这个规则可能和其他的regex库不一样,因为有不同的format限制:

(参考文献:http://blog.youkuaiyun.com/sammy_chan/article/details/8440230)

Escapes 转义符: 
\cX 一个ASCII转义序列 - 字符码点为 X % 32 
\xdd 一个十六进制转义序列 - 匹配码点为0xdd的单个字符。 
\x{dddd} 一个十六进制转义序列 - 匹配码点为0xdddd的单个字符。
\0ddd 八进制转义序列 - 匹配码点为0ddd的单个字符。 
\N{name} 匹配 符号名 为 name 的单个字符。例如 \N{newline} 匹配单个字符 \n。 


也就是说通过在线查询可以得到字符的16进制ASCII码:

http://www.goberl.com/functionAspx/regex.aspx

比如我要匹配的是半角的双引号,那么我输入" 点查询,可以得到如下结果:

输入一个字符	"
十进制ASC码	34
十六进制ASC码	22
八进制ASC码	42
正则表达式匹配	\u0022

按照boost的匹配格式,以成\xdd为例,应该写成:\x22

下面进行必要的测试:

string pattern = "p\\x22(.*?)\\x22d"; 

最终发现匹配成功! ^ ^



常用正则表达式:

http://www.jb51.net/tools/regex.htm


在C++项目中,如何权衡使用Boost库与坚持使用STL的标准组件 在C++软件开发领域,标准模板库(STL)与Boost库均扮演着至关重要的角色,分别提供了丰富的数据结构、算法和其他实用工具。然而,在实际项目中,开发者常常面临如何在这两者之间做出合理选择的问题。本文旨在深入分析STL与Boost库各自的特性,并给出在不同情况下何时选择使用哪一个的具体指导。 阅读详情

相关推荐

Windows下Boost C++库安装配置全指南:从下载到项目集成

C++标准库为开发者提供了基础功能,但在实际工程中,常需处理网络通信、文件系统、多线程等复杂任务,标准库的覆盖范围有限。Boost库作为C++标准库的扩展与试验场,通过严格的同行评审,提供了大量高质量、可移植的组件,其设计思想深刻影响了C++11/14/17等现代标准。从原理上看,Boost通过头文件库和需编译的二进制库两种形式交付,前者直接包含即可使用,后者则需正确链接。其技术价值在于,既能兼容老旧编译器环境,提供智能指针、正则表达式等现代特性,又能让开发者提前接触如Asio(异步I/O)、Spirit(

weixin_42557803的博客 394

C++ 正则表达式(匹配、搜索、替换)

首先C++的正则表达式的速度比boost的正则表达式的数据要慢很多。链接:简单正则表达式的使用:一:匹配 regex_matchregex_match 要求的是内容完全匹配正则表达式,一个错误都不行。二:搜索匹配 regex_searchregex_search 要求的是只要内容中存在正则表达式的要求就是正确的。三:匹配替代 regex_replaceregex_replace 要求的是只要内容中存在正则表达式的要求就替换成新的文字正则表达式特殊字符的处理。

qq_38409301的博客 4991

C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等)

<br />1、C++各大有名库的介绍——C++标准库<br />2、C++各大有名库的介绍——准标准库Boost<br />3、C++各大有名库的介绍——GUI<br />4、C++各大有名库的介绍——网络通信<br />5、C++各大有名库的介绍——XML<br />6、C++各大有名库的介绍——科学计算<br />7、C++各大有名库的介绍——游戏开发<br />8、C++各大有名库的介绍——线程<br />9、C++各大有名库的介绍——序列化<br />10、C++各大有名库的介绍——字符串<br

海峡 专栏 9739

BOOST库学习之正则表达式

前言 正则表达式的简介 正则表达式的匹配 正则表达式的查找 正则表达式的替换 正则表达式的迭代 正则表达式的分词 一、正则表达式的简介 1、正则表达式的匹配规则 正则表达式定义了一套复杂的语法规则,用于匹配有特定模式的字符串。在正则表达式中,大部分字符都匹配自己(普通字符),只有少量的字符用于定义特殊匹配模式的语法,如下所示: 特别字符 描述 $ 匹配输入字符串的结尾位置。要匹配 $ 字符本身,请使用 $。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。

qq_40223389的博客 906

C++ Boost库环境配置实战:VS、Dev-C++与VSCode全攻略

在C++开发中,第三方库的集成是提升开发效率的关键环节,而环境配置则是这一过程的基础。其核心原理在于编译器与链接器对头文件和库文件的查找机制:编译器通过包含目录定位头文件以进行语法解析和预处理,链接器则通过库目录和链接依赖项来解析外部符号引用,最终生成可执行文件。这一机制的技术价值在于实现了代码的模块化与复用,是现代软件工程依赖管理的基石。在实际应用中,不同开发环境(如Visual Studio、Dev-C++、VSCode)对此机制的实现方式各异,导致配置步骤存在显著差异。本文聚焦于被誉为“C++标准库试

weixin_28718769的博客 340

boost 正则表达式详解

boost正则表达式教程 boost正则表达式详解

Boost 学习--正则表达式

1、元字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 2、转义 \ 后接特殊字符 3、重复 重复零次或多次 重复1次或多次 ?重复0次或一次 {n}重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 4、字符类 [aeiou] 匹配元音字符 [a-z0-9] 支持匹配一个范围 5、分枝条件 | 匹配两个正则表达式的其中之一 6、分组 ()在后面接重复数字

realjc的博客 1243

速腾聚创激光雷达复现FAST-LIO

记录复现FAST-LIO算法的过程和,代码梳理和理解。FAST-LIO的简化版、注释版。速腾激光雷达

abanchao的博客 2930

深入浅出C/C++中的正则表达式库(二)——Boost.Regex

原创文章,转载请注明出处:小武哥的博客 本文固定链接:http://www.wuzesheng.com/?p=965 写在前面:本文是《深入浅出C/C++中的正则表达式库》系列的第二篇,如果对本文感兴趣,相信你也会对《深入浅出C/C++中的正则表达式库——GNU Regex Library》感兴趣。本文主要介绍Boost中的正则表达式库,通过介绍其基本内容与相关接口,希望...

weixin_34034670的博客 276

带有验证码的爆破(包含Burp suite工具爆破)

关于含有验证码爆破的一些总结!

weixin_43960066的博客 8693

ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析

本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。

xx56789的博客 777

Boost学习之正则表达式--regex

来源:http://blog.chinaunix.net/uid-21222282-id-1829265.html 来源:http://www.cnblogs.com/undermoon/archive/2009/11/30/1613508.html 来源:http://blog.youkuaiyun.com/guyulongcs/article/details/...

weixin_34148508的博客 550

ROS学习【11】-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示

ROS学习-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真目录一、Gazebo环境搭建前的准备1、将搭建模型下载到我们的gazebo环境下2、升级我们的gazebo版本二、创建配置launch文件参数的world文件1、进入工程包mbot_gazebo2、创建文件夹worlds3、进入该文件夹4、创建playground.world文件5、创建room.world文件三...

qq_42451251的博客 3608

boost 之正则表达式

最近做个小东西,用到了正则表达式,因为用的是C++,想赶下潮流,用下boost, 开始用boost::xpressvie, 在一台HP上一切都是正常的,然后到Sun的机器上进行编译,发现居然编译不过,晕倒了,还好及时到boost的网站上提交报告,不然自己瞎折腾,徒是浪费时间。 目

hnhbdss的专栏 810

Excel中如何快速地将成绩按比例来划分为等级?

问题介绍: 记录说明:班级里共有40个人,按最终总平均成绩从高到低划分等级,A等级30%,B等级50%,C等级20%。 部分成绩如下表所示: Excel中相关函数介绍: IF函数 IF函数有三个参数,语法如下: =IF(条件判断, 结果为真返回值, 结果为假返回值) 第一参数是条件判断,比如说“A1=">37”这种,判断TRUE或FALSE。如果判断是TRUE(结果为真)那么IF函数返回值是第二参数,否则(结果为假)返回第三参数。 如果省略了第三参数,则当结果为假时,会返回FALSE。 如果公式

Wendy的博客 1万+

电子数据取证实战:从“平航杯”竞赛看计算机检材分析的关键技术与案例解析

本文通过'平航杯'电子数据取证竞赛案例,深入解析计算机检材分析的关键技术,包括USB设备追踪、浏览器历史分析、AI换脸取证、虚拟货币交易追踪等实战技巧。重点探讨了数字痕迹的发现与关联,以及电子取证工具链的应用,为从业人员提供实用的技术参考和案例分析。

www00的博客 537

《超越C++标准库:Boost库导引》:Boost库简介-字符串和文本处理

字符串和文本处理Boost.Regex正则表达式对于解决相当数量的模式匹配(pattern-matching)问题是至关重要的。它们经常被用于处理长字符串、非精确地查找子字符串、根据某些格式tokenize字符串,或者依照某个标准对字符串进行修改。以前C++缺少对于正则表达式的支持,用户不得不求助于其它对正则表达式有强有力支持的语言,比如Perl,awk和sed。Regex对于正则表达式提供高效有

5403

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6231

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

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

haimianjie2012的专栏 3133

雷达方程从零开始的详细推导及实现

通过以上六步,我们从最基本的物理图像出发,完整地推导出了雷达方程。初学者可以按照这个逻辑,自己在纸上一步步重现整个过程。Python实现。

VectorShift的博客 337

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C++ BOOST库中文指南下载介绍:程序员的编程利器

C++ BOOST库中文指南下载介绍:程序员的编程利器 【下载地址】CBOOST库中文指南下载介绍 这是一份由官方文档翻译而来的C++ BOOST库中文指南,经过精心制作,为程序开发者提供了宝贵的参考资料。指南深入解析了C++ BOOST库的强大功能,帮助开发者提升编程效率与代码质量。其特点包括权威的官方文档中文翻译,手...

gitblog_06774的博客 578

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习工具包 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++ STL与Boost库选型指南:资深工程师的实战经验总结

在C++开发中,标准模板库(STL)和Boost库是两大核心工具集,理解它们的定位差异对项目技术选型至关重要。STL作为C++标准的一部分,提供了容器、算法和迭代器等基础组件,具有极佳的可移植性和性能,是构建可靠软件的首选。其设计遵循最小化和正交化原则,确保了代码的稳定性和跨平台一致性。相比之下,Boost库则扮演着前沿试验场的角色,提供了智能指针、文件系统操作和异步I/O等扩展功能,许多特性后来被纳入C++标准。从工程实践角度看,合理选择工具能显著提升开发效率和代码质量。例如,在内存管理场景中,C++11

weixin_33910385的博客 374

Boost库在现代C++开发中的5个高效应用场景

本文深入探讨了Boost库在现代C++开发中的五个高效应用场景,包括字符串处理、多线程编程、网络编程、元编程与类型处理以及文件系统与跨平台开发。通过具体代码示例和性能对比,展示了Boost如何超越标准库,为C++开发者提供更强大、更灵活的工具箱,从而提升开发效率和代码质量。

lake5的博客 972

C++之STL和Boost【转】

最近一年我电话面试了数十位 C++ 应聘者,惯用的暖场问题是“工作中使用过 STL 的哪些组件?使用过 Boost 的哪些组件?”。得到的答案大多集中在 vector、map 和 shared_ptr。如果对方是在校学生,我一般会问问 vector 或 map 的内部实现、各种操作的复杂度以及...

chijidun0185的博客 209
上一篇: 在Win7 x64中使用GNUstep和MinGW编写Objective-C的代码
下一篇: Android屏幕兼容性
sonikk
博客等级 码龄15年 68粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值