306573704 Char型和string型字符串比较整理(转)
1.赋值
char赋值:
char ch1[] = "give me";
char ch2[] = "a cup";
strcpy(ch1,ch2);
cout<<"ch1="<<ch1<<endl;
输出结果:ch1=a cup
string赋值:
string str1 = "give me";
string str2 = "a cup";
①str1 = str2;
cout<<"str1="<<str1<<endl;
②str1.assign(str2,0,5); // 参数2为起始位置,参数3为字符数
cout<<"str1="<<str1<<endl;
输出结果:str1=a cup
str1=a cup
2.合并(全部)
char合并(全部):
char ch1[15] = "give me "; // 注意长度,合并后为13
char ch2[] = "a cup";
strcat(ch1,ch2);
cout<<"ch1="<<ch1<<endl;
输出结果:ch1=give me a cup
string合并(全部)
string str1 = "give me ";
string str2 = "a cup";
str1 = str1 + str2;
cout<<"str1="<<str1<<endl;
输出结果:str1=give me a cup
3.合并(部分)
char合并(部分):
char ch1[10] = "ab"; // 注意合并后的长度
char ch2[] = "abc";
strncat(ch1,ch2,3); // 参数3为从起始位置起的字符数
cout<<"ch1="<<ch1<<endl;
输出结果:ch1=ababc
string合并(部分):
string str1 = "ab";
string str2 = "cdefg";
str1.append(str2,2,3); // 参数2为数组下标,参数3为参数2后字符数。即将str2从下标为2位置起3个字符合并到str1
cout<<"str1="<<str1<<endl;
输出结果:str1=abefg
4.测长
char测长:
char ch1[] = "give me";
int m = strlen(ch1); //不包括‘\0’
cout<<"m="<<m<<endl;
输出结果:m=7
string测长:
string str1 = "give me";
①int m = strlen(str1.c_str());
cout<<"m="<<m<<endl;
②int n = str1.size();
cout<<"n="<<n<<endl;
③int k = str1.length();
cout<<"k="<<k<<endl;
输出结果:m=7
n=7
k=7
5.替换
char替换:
char ch1[10] = "ab";
char ch2[] = "cdefg";
strncpy(ch1,ch2,3); // 拷贝ch2起始位置后3个字符赋给ch1
cout<<"ch1="<<ch1<<endl;
输出结果:ch1=cde
string替换:
string str1 = "ab";
string str2 = "cdefgh";
str1.replace(0,1,str2,4,2); // 将str2从下标4开始2个字符替换掉str1中从起始位置开始1个字符
// replace函数可重载,有多种形式,也支持Char型字符替换
cout<<"str1="<<str1<<endl;
输出结果:str1=ghb
6.拷贝
char拷贝:
char ch1[10] = "abc";
char ch2[] = "de";
memmove(ch1,ch2,2); //将ch2从起始位置起两个字符赋给ch1
cout<<"ch1="<<ch1<<endl;
输出结果:ch1=dec
string拷贝:
string str1 = "abc";
char ch2[10] = "defg";
str1.copy(ch2,10,1); // copy函数的第一个参数只能为char类型
// 将str1从下标1位置开始的10个字符赋给ch2
cout<<"ch2="<<ch2<<endl;
输出结果:ch2=bcfg
7.插入
string str1 = "1278";
string str2 = "3456";
str1.insert(2,str2,0,4); // 在str1下标为2的位置插入str2起始位置后4个字符
cout<<"str1="<<str1<<endl;
输出结果:str1=12345678
8.删除
string str("give me");
str.erase(2,2); // 删除从下标为2位置起两个字符
cout<<"str="<<str<<endl;
str.erase(2); // 删除下标为2位置后全部字符
cout<<"str="<<str<<endl;
str.erase(); // 删除所有字符
cout<<"str="<<str<<endl;
输出结果:str=gi me
str=gi
str=
9.查找
string str("Hello worldw");
int m = str.find('w',0); // 从str起始位置开始查找w字符
cout<<"m="<<m<<endl;
int n = str.find_first_not_of('w',0); // 查找str起始位置开始不是w的字符
cout<<"n="<<n<<endl;
int k = str.find_first_of('w',0); // 从str起始位置开始查找第一个w字符
cout<<"k="<<k<<endl;
int l = str.find_last_of('w'); // 查找最后一个w的位置
cout<<"l="<<l<<endl;
int p = str.find_last_not_of('w'); // 查找最后一个不是w的字符的位置
cout<<"p="<<p<<endl;
int q = str.rfind('w'); // 反向查找
cout<<"q="<<q<<endl;
输出结果:m=6
n=0
k=6
l=11
p=10
q=11
10.比较
string str1 = "155";
string str2 = "52";
char c[] = "34";
int i = str1.compare(str2);
cout<<"i="<<i<<endl; // 输出i=-1
int j = str2.compare(c); // string字符串可以与char字符比较
cout<<"j="<<j<<endl; // 输出j=1
int l = str1.compare(0,2,str2); // 比较前两个字符
cout<<"l="<<l<<endl; // 输出l=-1;
int k = str1.compare(1,1,str2,0,1); // str1下标为1位置字符与str2下标为0位置字符比较
cout<<"k="<<k<<endl; // 输出k=0
int m = str1.compare(1,1,c,0,1);
cout<<"m="<<m<<endl;// 输出m=1
int n = str1.compare(1,1,c,1);
cout<<"n="<<n<<endl; // 输出n=1
11.判空
string str = "";
if(str.empty())
12.转换(string转字符数组)
string str1 = "Hello World";
const char* ch1;
ch1 = str1.c_str();
13.交换
char交换:
char ch1[15] = "ofru";
char ch2[15] = "";
swab(ch1,ch2,strlen(ch1)); // 将ch1奇偶对调后传入ch2
cout<<"ch2="<<ch2<<endl;
输出结果:ch2=four
string交换:
string str1 = "four";
string str2 = "";
str1.swap(str2);
cout<<"str2="<<str2<<endl;
输出结果:str2=four
306573704 Char型和string型字符串比较整理(转)的更多相关文章
- Char型和string型字符串比较整理
1.赋值 char赋值: char ch1[] = "give me"; char ch2[] = "a cup"; strcpy(ch1,ch2); cout ...
- 关于 float 型和 double 型的区别,以及 char 型和 String 型的不同
一.1.float是单精度浮点数,内存分配4个字节,占32位,有效小数位6-7位 double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位 2.java中默认声明的小数是double类 ...
- char型字符串(数组)与string型字符串 指针与引用
一.常指针: int *const p; //指针不可改变,但是指针指向的数据可以改变. 指向常量的指针: const int *p; //指针可以改变,但是指针指向的数据不可以改变. 指 ...
- 用scanf、printf输入输出string型字符串
c语言里是没有string型的,string在c++里面.有的时候在c++里要用scanf.printf输入输出string型字符串,这是可以实现的,不过要做一点处理. 具体操作看代码: #inclu ...
- C字符串和C++中string的区别 &&&&C++中int型与string型互相转换
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别: C字符串 string对象(C++) 所需的头文件名称 ...
- C++ 中 int,char*,string,CString之间相互转换-整理
<多字符集下> #include <string> //使用C++标准库的string类时, 定义时 std::string str; using namespace std; ...
- 18:字符串-char型字符串
1 什么是字符串? 字符串是以空字符(\)结尾的字符数组.空字符的assii码为:0, 空格的ascii码为322 \0的作用'\0'是一个空字符标志,它的ASSII码为0,C++有好多处理字符串的函 ...
- char*、string、CString各种字符串之间转换
参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...
- 关于如何将_variant_t型转化为int型和string类型
1)将_variant_t型转化为int型 关于将_variant_t型转化为int型,网上有好多好多参考,但好多都很复杂并且还不对,其实整个转化过程就只一行代码可以搞定: _variant_t a; ...
随机推荐
- 两个简单方法加速DataGridView
两个简单方法加速DataGridView (2009-03-24 16:57:13) 转载▼ 标签: 杂谈 分类: .NET DataGridView虽然好用,但是如果数据量比较大的话就会出现性能的问 ...
- 作为平台的Windows PowerShell(二)
在此系列文章的前一篇,我们看到了怎样使用System.Management.Automation.PowerShell 类来在c#应用程序中运行PowerShell 命令.在那些例子中,我们创建的都是 ...
- PKU Online Judge 1054:Cube (设置根节点)
1054:Cube 总时间限制: 1000ms 内存限制: 131072kB 描述 Delayyy君很喜欢玩某个由Picks编写的方块游戏,游戏在一个由单位格组成的棋盘上进行. 游戏的主角是一 ...
- Struts2中的类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...
- js源码保护
js的不可读化处理分为三个方面:压缩(compression).混淆(obfuscation) 和加密(encryption). (不可读化处理,这是我自己发明的术语,一切会增加代码不可读性的代码转换 ...
- Socket异步通信学习二
接下来是服务器部分,采用异步模式,新建了一个AsynServer类,用于存放socket服务器代码,主要有4个方法: 有一个全局socket,下面四个方法中都用到. Socket socket = n ...
- swift和oc区别----属性部分(参考官方swift2.1文档)
对于实用过OC的人来说实用swift上手时非常容易的,swift包括了oc的大部分功能,但是swift毕竟是一门新的编程语言,它和OC还是 有很多不同的地方,而且提供了不少新功能,所以本人在读swif ...
- MAC 环境下初始化mysql root 密码
1. 关掉mysql服务,打开系统设置最后的mysql,然后将mysql先关掉 2. 生成一个文件命名mysql-init,文件中放入:一句话,这句话不同版本不一样,如下:(括号里面不包含) alte ...
- Lucene 索引功能
Lucene 数据建模 基本概念 文档(doc): 文档是 Lucene 索引和搜索的原子单元,文档是一个包含多个域的容器. 域(field): 域包含“真正的”被搜索的内容,每一个域都有一个标识名称 ...
- rails 项目部署中 nginx 报错及解决方法
错误1 1. 报403错误,是因为启动nginx的用户默认是nobody,没有对项目目录的访问权限. user myName; worker_processes ; 错误2 2. 报404错误,是因为 ...