C++ string的用法和例子

2023-11-02

https://blog.csdn.net/tengfei461807914/article/details/52203202

 

string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。同时C++的算法库对string也有着很好的支持,而且string还和c语言的字符串之间有着良好的接口。虽然也有一些弊端,但是瑕不掩瑜。 
其中使用的代码多数都是来自cpp官网,因为例子非常全。

声明和初始化方法:

想使用string首先要在头文件当中加入< string > 
声明方式也很简单

声明:
string s;//声明一个string 对象
string ss[10];//声明一个string对象的数组
  • 1
  • 2
初始化:

使用等号的初始化叫做拷贝初始化,不使用等号的初始化叫做直接初始化。

#include <bits/stdc++.h>
using namespace std;

int main() { ios::sync_with_stdio(false); string s;//默认初始化,一个空字符串 string s1("ssss");//s1是字面值“ssss”的副本 string s2(s1);//s2是s1的副本 string s3=s2;//s3是s2的副本 string s4(10,'c');//把s4初始化 string s5="hiya";//拷贝初始化 string s6=string(10,'c');//拷贝初始化,生成一个初始化好的对象,拷贝给s6 //string s(cp,n) char cs[]="12345"; string s7(cs,3);//复制字符串cs的前3个字符到s当中 //string s(s2,pos2) string s8="asac"; string s9(s8,2);//从s2的第二个字符开始拷贝,不能超过s2的size //string s(s2,pos2,len2) string s10="qweqweqweq"; string s11(s10,3,4);//s4是s3从下标3开始4个字符的拷贝,超过s3.size出现未定义 return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

字符串处理:

substr操作:

注意substr没有迭代器作为参数的操作

#include <bits/stdc++.h>
using namespace std;
int main() { ios::sync_with_stdio(false); string s="abcdefg"; //s.substr(pos1,n)返回字符串位置为pos1后面的n个字符组成的串 string s2=s.substr(1,5);//bcdef //s.substr(pos)//得到一个pos到结尾的串 string s3=s.substr(4);//efg return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

如果输入的位置超过字符的长度,会抛出一个out_of_range的异常

insert操作:

代码来自cpp官网,经过自己的整理 
注意用迭代器当参数和无符号数当参数的区别

#include <bits/stdc++.h>
using namespace std;
int main() { ios::sync_with_stdio(false); string str="to be question"; string str2="the "; string str3="or not to be"; string::iterator it; //s.insert(pos,str)//在s的pos位置插入str str.insert(6,str2); // to be the question //s.insert(pos,str,a,n)在s的pos位置插入str中插入位置a到后面的n个字符 str.insert(6,str3,3,4); // to be not the question //s.insert(pos,cstr,n)//在pos位置插入cstr字符串从开始到后面的n个字符 str.insert(10,"that is cool",8); // to be not that is the question //s.insert(pos,cstr)在s的pos位置插入cstr str.insert(10,"to be "); // to be not to be that is the question //s.insert(pos,n,ch)在s.pos位置上面插入n个ch str.insert(15,1,':'); // to be not to be: that is the question //s.insert(s.it,ch)在s的it指向位置前面插入一个字符ch,返回新插入的位置的迭代器 it = str.insert(str.begin()+5,','); // to be, not to be: that is the question //s.insert(s.it,n,ch)//在s的it所指向位置的前面插入n个ch str.insert (str.end(),3,'.'); // to be, not to be: that is the question... //s.insert(it,str.ita,str.itb)在it所指向的位置的前面插入[ita,itb)的字符串 str.insert (it+2,str3.begin(),str3.begin()+3); // to be, or not to be: that is the question... return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
erase操作:

用来执行删除操作 
删除操作有三种

  • 指定pos和len,其中pos为为起始位置,pos以及后面len-1个字符串都删除
  • 迭代器,删除迭代器指向的字符
  • 迭代器范围,删除这一范围的字符串,范围左闭右开

代码来自cpp官网

#include <iostream>
#include <string>

int main ()
{
  std::string str ("This is an example sentence."); std::cout << str << '\n'; // "This is an example sentence." str.erase (10,8); // ^^^^^^^^ //直接指定删除的字符串位置第十个后面的8个字符 std::cout << str << '\n'; // "This is an sentence." str.erase (str.begin()+9);// ^ //删除迭代器指向的字符 std::cout << str << '\n'; // "This is a sentence." // ^^^^^ str.erase (str.begin()+5, str.end()-9); //删除迭代器范围的字符 std::cout << str << '\n'; // "This sentence." return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
append和replace操作:

append函数可以用来在字符串的末尾追加字符和字符串。由于string重载了运算符,也可以用+=操作实现 
repalce顾名思义,就是替换的意思,先删除,后增加。 
代码来自cpp官网,附上自己的解释

#include <iostream>
#include <string>

int main ()
{
    std::string str; std::string str2="Writing "; std::string str3="print 10 and then 5 more"; //直接追加一个str2的字符串 str.append(str2); // "Writing " //后面追加str3第6个字符开始的3个字符串 str.append(str3,6,3); // "10 " //追加字符串形参的前5个字符 str.append("dots are cool",5); // "dots " //直接添加 str.append("here: "); // "here: " //添加10个'.' str.append(10u,'.'); // ".........." //添加str3迭代器范围的字符串 str.append(str3.begin()+8,str3.end()); // " and then 5 more" //最后这个比较特殊,意思是添加5个'A',实际上参数里面的65对应的asc码就是65 str.append<int>(5,65); // "....." //字符串追加也可以用重载运算符实现 str+="lalala"; std::cout << str << '\n'; return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

replace的使用方法,replace支持使用无符号整数寻找位置,也支持用迭代器寻找位置

#include <iostream>
#include <string>

int main ()
{
    std::string base="this is a test string."; std::string str2="n example"; std::string str3="sample phrase"; std::string str4="useful."; // replace signatures used in the same order as described above: // Using positions: 0123456789*123456789*12345 std::string str=base; // "this is a test string." //第9个字符以及后面的4个字符被str2代替 str.replace(9,5,str2); // "this is an example string." (1) //第19个字符串以及后面的5个字符用str的第7个字符以及后面的5个字符代替 str.replace(19,6,str3,7,6); // "this is an example phrase." (2) //第8个字符以及后面的9个字符用字符串参数代替 str.replace(8,10,"just a"); // "this is just a phrase." (3) //第8个字符以及后面的5个字符用字符串参数的前7个字符替换 str.replace(8,6,"a shorty",7); // "this is a short phrase." (4) //第22以及后面的0个字符用3个叹号替换 str.replace(22,1,3,'!'); // "this is a short phrase!!!" (5) //迭代器的原理同上 // Using iterators: 0123456789*123456789* str.replace(str.begin(),str.end()-3,str3); // "sample phrase!!!" (1) str.replace(str.begin(),str.begin()+6,"replace"); // "replace phrase!!!" (3) str.replace(str.begin()+8,str.begin()+14,"is coolness",7); // "replace is cool!!!" (4) str.replace(str.begin()+12,str.end()-4,4,'o'); // "replace is cooool!!!" (5) str.replace(str.begin()+11,str.end(),str4.begin(),str4.end());// "replace is useful." (6) std::cout << str << '\n'; return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

以上的replace操作可以用insert和erase的操作组合替换,但是replace操作更加方便。

assign操作: 
assign操作在一起列容器当中都存在,比如vector等等。是一个很基本的操作函数,string使用assign可以灵活的对其进行赋值。 
代码来自cpp官网

#include <iostream>
#include <string>

int main ()
{
    std::string str; std::string base="The quick brown fox jumps over a lazy dog."; // used in the same order as described above: //直接把base赋值给str str.assign(base); std::cout << str << '\n'; //把base第10个字符以及后面的8个字符赋给str str.assign(base,10,9); std::cout << str << '\n'; // "brown fox" //把参数中的0到6个字符串赋给str str.assign("pangrams are cool",7); std::cout << str << '\n'; // "pangram" //直接使用参数赋值 str.assign("c-string"); std::cout << str << '\n'; // "c-string" //给str赋值10个'*'字符 str.assign(10,'*'); std::cout << str << '\n'; // "**********" //赋值是10个'-' str.assign<int>(10,0x2D); std::cout << str << '\n'; // "----------" //指定base迭代器范围的字符串 str.assign(base.begin()+16,base.end()-12); std::cout << str << '\n'; // "fox jumps over" return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

string的搜索操作:

string类中提供了很多性能优秀,使用方便的成员方法。而且在泛型算法当中也有很多实用的技巧。

find和rfind函数:

find函数主要是查找一个字符串是否在调用的字符串中出现过,大小写敏感。 
代码来自cpp官网

#include <bits/stdc++.h>
using namespace std;

int main() { ios::sync_with_stdio(false); std::string str ("There are two needles in this haystack with needles."); std::string str2 ("needle"); // different member versions of find in the same order as above: //在str当中查找第一个出现的needle,找到则返回出现的位置,否则返回结尾 std::size_t found = str.find(str2); if (found!=std::string::npos) std::cout << "first 'needle' found at: " << found << '\n'; //在str当中,从第found+1的位置开始查找参数字符串的前6个字符 found=str.find("needles are small",found+1,6); if (found!=std::string::npos) std::cout << "second 'needle' found at: " << found << '\n'; //在str当中查找参数中的字符串 found=str.find("haystack"); if (found!=std::string::npos) std::cout << "'haystack' also found at: " << found << '\n'; //查找一个字符 found=str.find('.'); if (found!=std::string::npos) std::cout << "Period found at: " << found << '\n'; //组合使用,把str2用参数表中的字符串代替 // let's replace the first needle: str.replace(str.find(str2),str2.length(),"preposition"); std::cout << str << '\n'; return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

rfind函数就是找最后一个出现的匹配字符串,返回的位置仍然是从前往后数的。

#include <bits/stdc++.h>
using namespace std;

int main() { ios::sync_with_stdio(false); std::string str ("The sixth sick sheik's sixth sheep's sick."); std::string key ("sixth");// ^ //rfind是找最后一个出现的匹配字符串 std::size_t found = str.rfind(key); if (found!=std::string::npos) { cout<<found<<endl;//输出23 str.replace (found,key.length(),"seventh");//找到的sixth替换成seventh } std::cout << str << '\n'; return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

查找的效率非常高,我没看过stl源码剖析,但是感觉是用kmp实现的。呵呵,可以自己写一个。

find_….of函数:
  • find_first_of(args) 查找args中任何一个字符第一次出现的位置
  • find_last_of(args) 最后一个出现的位置
  • find_fist_not_of(args) 查找第一个不在args中的字符
  • find_last_not_of 查找最后一个不在args中出现的字符
#include <bits/stdc++.h>
using namespace std;

int main() { ios::sync_with_stdio(false); std::string str1 ("Please, replace the vowels in this sentence by asterisks."); std::size_t found1 = str1.find_first_of("aeiou"); //把所有元音找出来用*代替 while (found1!=std::string::npos) { str1[found1]='*'; found1=str1.find_first_of("aeiou",found1+1); } std::cout << str1 << '\n'; //在str2中找到第一个不是消协英文字母和空格的字符 std::string str2 ("look for non-alphabetic characters..."); std::size_t found2 = str2.find_first_not_of("abcdefghijklmnopqrstuvwxyz "); if (found2!=std::string::npos) { std::cout << "The first non-alphabetic character is " << str2[found2]; std::cout << " at position " << found2 << '\n'; } return 0; } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

find_last_of和find_last_not_of与first基本相同,就不写例子代码了。

比较与转换:

类似c语言的字符串比较函数strcmp函数一样,支持字符串比较操作,同时也类似python、C#语言中的函数一样,支持把数字和字符串转换。有些特性是C++11当中才有。 
注意编译器bug: 
在MinGW编译器当中如果版本低于3.8,虽然支持c++11但是里面有一个bug,就是不支持字符串和数组的转换!要更新MinGW的版本才可以,或者直接使用g++。

compare函数:

和strcmp函数一样,如果两个字符串相等,那么返回0,调用对象大于参数返回1,小于返回-1。 
在compare当中还支持部分比较,里面有6个参数可以设置。

#include <bits/stdc++.h>
using namespace std;

int main() { ios::sync_with_stdio(false); string s1="123",s2="123"; cout<<s1.compare(s2)<<endl;//0 s1="123",s2="1234"; cout<<s1.compare(s2)<<endl;//-1 s1="1234",s2="123"; cout<<s1.compare(s2)<<endl;//1 std::string str1 ("green apple"); std::string str2 ("red apple"); if (str1.compare(str2) != 0) std::cout << str1 << " is not " << str2 << '\n'; //str1的第6个字符以及后面的4个字符和参数比较 if (str1.compare(6,5,"apple") == 0) std::cout << "still, " << str1 << " is an apple\n"; if (str2.compare(str2.size()-5,5,"apple") == 0) std::cout << "and " << str2 << " is also an apple\n"; //str1的第6个字符以及后面的4个字符和str2的第4个字符以及后面的4个字符比较 if (str1.compare(6,5,str2,4,5) == 0) std::cout << "therefore, both are apples\n"; return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

由于string重载了运算符,可以直接用>,<,==来进行比较,也很方便。

数值转换:

在io的部分有过数值和字符串相互转换的例子,使用的是stringstream函数,在c++11当中有定义好的现成的函数取调用,非常方便。

string和数值转换  
to_string(val) 把val转换成string
stoi(s,p,b) 把字符串s从p开始转换成b进制的int
stol(s,p,b) long
stoul(s,p,b) unsigned long
stoll(s,p,b) long long
stoull(s,p,b) unsigned long long
stof(s,p) float
stod(s,p) double
stold(s,p) long double

//注意,下段代码在MinGw中会报错!即使使用c++11编译也一样,无法识别to_string!

#include <bits/stdc++.h>
using namespace std;

int main() { ios::sync_with_stdio(false); string s1; s1=to_string(100); cout<<s1<<endl; int a=stoi(s1,0,10)+1; cout<<a<<endl; return 0; }

转载于:https://www.cnblogs.com/kungfupanda/p/9022764.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ string的用法和例子 的相关文章

  • LeetCode 451. Sort Characters By Frequency

    原题网址 https leetcode com problems sort characters by frequency Given a string sort it in decreasing order based on the fr
  • Midjourney API 接口调试

    最近写了一个Midjourney API的接口 可以通过调用接口实现AI绘画 本地服务使用了 Midjourney 最近关注AI比较多 自己实现了一个AI绘画 Midjourney的接口 通过发送关键词就能实现绘画 发现需要的人也挺多的 准
  • JDK8主要新特性介绍(一)

    1 语言新特性1 1接口新增默认方法与静态方法 1 1 1 Interface Default Method For creating a default method in java interface we need to use de
  • DS18B20数字温度传感器

    DS18B20是一种数字温度传感器 由美国达拉斯半导体公司生产 具有以下特征 1 单线传输 DS18B20使用单线传输协议 1 Wire 进行通信 只需要一个数据线就可以实现数据传输和电源供应 2 高精度 DS18B20可以测量范围为 55
  • 五、高级数据结构和算法:2-3查找树、红黑树

    5 2 3查找树 红黑树 5 1 2 3查找树 和二叉树不一样 2 3树每个节点保存1个或者2个的key 对于普通的2节点 2 node 要有1个key和左右两个子节点 对应3节点 3 node 要有两个Key和三个子节点 2 3查找树的定
  • EMC测试(5)——传导发射测试(CE)

    1 1 概念介绍 传导发射 Conducted Emission 测试 简称CE 也被称为传导骚扰 是指系统内部的电压或电流通过信号电缆 电源线或地线传输出去而成为其他系统或设备干扰源的一种电磁现象 传导发射测试通常也会被称为骚扰电压测试
  • C# 多组充电测试框架

    有多个电流电压表通过串口连接到PC 点了对应按钮后 开始计时 到达对应时间后 读取电流电压表 链接 https caiyun 139 com m i 0E5CJYSahvlql 提取码 TDZa 复制内容打开和彩云手机APP 操作更方便哦
  • 小程序使用本地图片设置背景图

    如果在wxml文件中使用本地路径图片作为背景图 在微信开发者工具中可以显示出来 但运行到手机上显示不出来 解决如下 方法一 require 引入 使用 require 引入本地图片 require方式获取的值可以直接生成base64格式 d
  • 栈跟队列

    387 数据结构实验 顺序栈 描述创建一个顺序栈 能够完成栈的初始化 入栈 出栈 获取栈顶元素 销毁栈等操作
  • APT攻击详解

    0x01 APT到底是什么 APT 高级持续威胁 Advanced Persistent Threat 普遍认可的定义是 利用各种先进的攻击手段 对高价值目标进行的有组织 长期持续性网络攻击行为 也就是说很难去确定是不是APT攻击 只能从已
  • L1W2作业1

    1 使用numpy构建基本函数 Numpy是Python中主要的科学计算包 它由一个大型社区维护 在本练习中 你将学习一些关键的numpy函数 例如np exp np log和np reshape 你需要知道如何使用这些函数去完成将来的练习
  • Qt - MQTT客户端调试助手

    Qt MQTT客户端调试助手 Qt5 9 4 MinGW开发 MQTT调试助手 源码和软件下载链接如下 源码地址 https gitee com jhembedded MQTT Client 软件截图 使用说明 软件目录下有一个配置文件co
  • JavaWeb——Tomcat

    tomcat9安装步骤 Apache Tomcat Welcome 下载完 解压文件 测试tomcat是否能正常运行 启动tomca 打开网站输入localhost 8080 关闭tomcat tomca配置的核心文件server 可配置启
  • 高频卡S50和S70标签存储结构了解

    一 存储容量不同 Mifare S70的容量是S50的4倍 S50的容量是1K字节 S70的容量为4K字节 二 应答方式不同 二者应答读写器返回的卡类型 ATQA 字节不同 Mifare S50的卡类型 ATQA 是0004H Mifare
  • 快速创建一个servlet并且在web.xml配置和使用它

    这次 我要来教大家怎么快速创建一个servlet并且在web xml配置和使用它 实际上 现在可以直接在eclipse中创建一个servlet使其继承HttpServlet 而且你还可以对其进行一定的配置 在图中红色的地方写上你的Servl
  • Raneto中文搜索支持

    背景 因业务部门需要在线软件使用说明文档 但我们资源不足 故我想找一个开源的知识库 发现 Raneto不错 决定使用 官方文档相当清晰 部署完成 发布一些文章 启动项目 交由业务同事测试使用 于是我收到 中文搜索 不支持反馈 查看其配置文件
  • RocketMQ、RabbitMQ、Kafka区别

    一 编程语言 RocketMQ是java编写 Kafka采用scala RabbitMQ采用Erlang 二 数据权限安全 Kafka0 9 RocketMQ4 2以后 已经和RabbitMQ对齐 都有topic级别的控制权限 三 架构和高
  • 机器学习绪论(3)

    归纳偏好 机器学习算法在学习过程中对某种类型假设的偏好 归纳偏好对应了算法本身所做出的关于 什么样的模型更好 的假设 有效的机器学习算法必然有归纳偏好 否则无法产生确定的学习结果 比如对于下图 三个假设对于同一个新样本 会产生不同的结果 对
  • 微信小程序CryptoJS解析java DES/CBC/PKCS5Padding

    文章目录 目标 js解析库下载地址 解决代码 java后台端代码 小程序 CryptoJS 注意 详细步骤解决 小程序解决 为什么添加上面的代码就可以解密 拓展 参考 目标 java端采用DES CBC PKCS5Padding 加密 前端
  • IT项目管理-项目时间管理

    IT项目管理 项目时间管理 题目 教材练习题6 教材练习题7 解答 教材练习题6 a

随机推荐

  • CCS安装编译器的方法

    TI公司的编译器叫CGT code generation tools 先下载所需版本的CGT 到TI官网找CGT 在www ti com cn上搜索CGT 即可找到C2000 CGT C2000代码生成工具 编译器 也可以直接到这里找 C2
  • 新浪微博发图片时报错

    error does multipart has image error code 20007 2 statuses upload json JAVA 新浪微博 官网sdk 在调用 public Status UploadStatus St
  • 几种linux内核文件的区别(vmlinux、zImage、bzImage、uImage、vmlinuz、initrd )

    对于Linux内核 编译可以生成不同格式的映像文件 例如 make zImage make uImage zImage是ARM Linux常用的一种压缩映像文件 uImage是U boot专用的映像文件 它是在zImage之前加上一个长度为
  • 3D WEB引擎HOOPS Commuicator助力Naval Architect Jumpstart快速启动船舶信息建模平台开发

    行业 造船业 挑战 新公司希望将创新的船舶信息建模产品推向市场 基于浏览器的产品需要支持高级可视化和强大的数据转换 以处理大型 复杂的造船项目 小型开发团队的任务是雄心勃勃的平台发布计划 解决方案 Tech Soft 3D提供领先的SDK
  • 请问在CSS里面,这个符号是什么 意思?

    是HTML注释 不是CSS注释 CSS是 之所以会有人这么写是因为有的浏览器不支持CSS CSS的标记就会被直接显示出来 用HTML注释掉是为了确保兼容性 而那些支持CSS的浏览器就可以正确解析了 追问 那请问我在什么地方都用就可以了吗 回
  • 开放-封闭原则

    一 定义 开放 封闭原则 是说软件实体 类 模块 函数等等 应该是可扩展的 但是不可修改 ASD 这个原则其实是有两个特征 一个是说 对于扩展是开放的 Open for extension 对于更改是封闭的 Closed for modif
  • java语言利用正则表达式判断身份证号码合法性

    判断身份证 要么是15位 要么是18位 最后一位可以为字母 并写程序提出其中的年月日 我们可以用正则表达式来定义复杂的字符串格式 d 17 0 9a zA Z d 14 0 9a zA Z 可以用来判断是否为合法的15位或18位身份证号码
  • AI人像抠图及图像合成:让你一键环游世界

    本程序基于百度飞浆 PaddlePaddle 平台完成 该程序通过DeepLabv3 模型完成一键抠图 encoder decoder进行多尺度信息的融合 同时保留了原来的空洞卷积和ASSP层 其骨干网络使用了Xception模型 提高了语
  • conda activate base报错Your shell has not been properly configured to use ‘conda activate‘.

    conda activate base报错Your shell has not been properly configured to use conda activate 使用conda activate base激活base环境时 出现
  • HTTP缓存机制

    缓存的作用 提高资源加载速度 减少网络请求 提高页面渲染速度 缓存的分类 前端缓存主要包括http缓存 数据缓存 HTTP缓存 常见的 HTTP 缓存只能存储 GET 响应 对于其他类型的响应则无能为力 浏览器在每次GET URL时都会先检
  • 【车联网原型系统|二】数据库+应用层协议设计

    物联网原型系统导航 车联网原型系统 一 项目介绍 需求分析 概要设计 https blog csdn net weixin 46291251 article details 125807297 车联网原型系统 二 数据库 应用层协议设计 h
  • Excel里关于if的9个函数,如何指定条件求和、计数、平均等

    总结了一下Excel里的求满足条件的计数 求和 平均值 最大值 最小值 标准差等9个方法 01 countif 作用 对满足条件的区域统计个数 模板 countif 条件所在的区域 条件 实例 A B列是广东不同地市的得分评价情况 在E2单
  • labelme标注结果可视化(持续补充)

    图像数据常用的标注工具是labelme 标注的格式是json labelme标注结果可视化 是将标注结果绘制到原始图像上 以方便查看标注结果 1 json文件读取与保存 由于labelme标注的保存格式为json 所以必须掌握json文件的
  • 【已解决】SpringBoot整合security账号密码正确却提示错误

    已解决 SpringBoot整合security账号密码正确却提示错误 一 引言 SpringSecurity的密码校验并不是直接使用原文进行比较 而是使用加密算法将密码进行加密 更准确地说应该进行Hash处理 此过程是不可逆的 无法解密
  • react 是怎么运行的?

    react 是怎么运行的 import React from react import ReactDOM from react dom const App div style color 000000 hello world div con
  • 如何完全删除,删的可以重新下载新的MySQL·

    第一步 快捷键win r输入regedit进入注册表 找到HKEY LOCAL MACHINE SYSTEM ControlSet001 Services Eventlog Application MySQL文件夹删除 删除HKEY LOC
  • 程序员精进之路:性能调优利器--火焰图

    本文主要分享火焰图使用技巧 介绍 systemtap 的原理机制 如何使用火焰图快速定位性能问题原因 同时加深对 systemtap 的理解 让我们回想一下 曾经作为编程新手的我们是如何调优程序的 通常是在没有数据的情况下依靠主观臆断来瞎蒙
  • Docker 镜像使用基本操作

    今天我将围绕 Docker 核心概念镜像展开 首先重点讲解一下镜像的基本操作 然后介绍一下镜像的实现原理 首先说明 咱们本课时的镜像均指 Docker 镜像 你是否还记得镜像是什么 我们先回顾一下 镜像是一个只读的 Docker 容器模板
  • 作为网络工程师,你知道私有IP地址范围吗?

    RFC 1918定义了私有IP的范围私有 内网 IP地址范围 A类 10 0 0 0 10 255 255 255B类 172 16 0 0 172 31 255 255C类 192 168 0 0192 168 255 255 提高 RF
  • C++ string的用法和例子

    https blog csdn net tengfei461807914 article details 52203202 string是C 标准库的一个重要的部分 主要用于字符串处理 可以使用输入输出流方式直接进行操作 也可以通过文件等手