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

  

以上,整理自《范磊C++视频》笔记

Char型和string型字符串比较整理的更多相关文章

  1. 306573704 Char型和string型字符串比较整理(转)

    1.赋值 char赋值: char ch1[] = "give me"; char ch2[] = "a cup"; strcpy(ch1,ch2); cout ...

  2. 关于 float 型和 double 型的区别,以及 char 型和 String 型的不同

    一.1.float是单精度浮点数,内存分配4个字节,占32位,有效小数位6-7位 double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位 2.java中默认声明的小数是double类 ...

  3. char型字符串(数组)与string型字符串 指针与引用

    一.常指针: int *const p;    //指针不可改变,但是指针指向的数据可以改变. 指向常量的指针: const int *p;    //指针可以改变,但是指针指向的数据不可以改变. 指 ...

  4. 用scanf、printf输入输出string型字符串

    c语言里是没有string型的,string在c++里面.有的时候在c++里要用scanf.printf输入输出string型字符串,这是可以实现的,不过要做一点处理. 具体操作看代码: #inclu ...

  5. C字符串和C++中string的区别 &&&&C++中int型与string型互相转换

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...

  6. C++ 中 int,char*,string,CString之间相互转换-整理

    <多字符集下> #include <string> //使用C++标准库的string类时, 定义时 std::string str; using namespace std; ...

  7. 18:字符串-char型字符串

    1 什么是字符串? 字符串是以空字符(\)结尾的字符数组.空字符的assii码为:0, 空格的ascii码为322 \0的作用'\0'是一个空字符标志,它的ASSII码为0,C++有好多处理字符串的函 ...

  8. char*、string、CString各种字符串之间转换

    参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...

  9. 关于如何将_variant_t型转化为int型和string类型

    1)将_variant_t型转化为int型 关于将_variant_t型转化为int型,网上有好多好多参考,但好多都很复杂并且还不对,其实整个转化过程就只一行代码可以搞定: _variant_t a; ...

随机推荐

  1. 【转】Java与C#语言级比较

    原文链接:http://www.harding.edu/fmccown/java_csharp_comparison.html Java 程序结构 C# package hello;public cl ...

  2. jfreechart中文乱码问题解决方案(转)

    参考网址:http://zhidao.baidu.com/link?url=y88rR1_aAHaFofonx9o_IaEu87MpkTQImsqDcy587eG55JkfQV6EzzzloIgXuQ ...

  3. Crystal Report分組中的序號重新遞增

    客戶要批次列印發票,也就是報表需要按照發票號碼(INV_NO)進行分組,每個發票里還有明細的item,之前因為直接抓RecordNumber,所以該欄位只能從1開始計數,遇到新的發票發號不會重新從1開 ...

  4. 关于OC-省市区习题

    对于省市区的问题,关键在于搞清楚数组嵌套字典,字典里面装数组的多重嵌套关系,沉下心来,捋清楚思路, 实在看不懂就多打几遍,这道题理解了,熟练了对之后学习很有好处. 代码如下: NSString *pa ...

  5. sizeof 和 strlen

    1. sizeof 1.1 sizeof是一个独立的运算符,不是函数.sizeof给我们提供有关数据项目所分配的内存的大小.例如: 1 2 cout << sizeof(long) < ...

  6. HDU 1070 - Milk

    给每种牛奶价格和量 要求买最便宜的牛奶 #include <iostream> using namespace std; int t,n; ][]; ],v[]; int main() { ...

  7. (转载) socket:10038错误{winSock的一个bug:当closesocket多次错误使用时会导致问题}

    这几天想在一个开源的代码上进行修改,以期研发出一个产品出来.       程序原来是单线程网络程序,需要修改为多线程,修改之后,总是出问题,辅助线程中的recv函数总是运行一阵子之后收到长度为-1的数 ...

  8. oracle DBLink

    现有两个oracle DB为A和B,为了能在A数据库中对B数据库进行操作,我们需要在A数据库中建立对B的DBLink.    在创建DBLink之前,我们首先去检查下DB A的global_names ...

  9. Android PorterDuff.Mode

    1.PorterDuff.Mode.CLEAR所绘制不会提交到画布上. 2.PorterDuff.Mode.SRC显示上层绘制图片 3.PorterDuff.Mode.DST显示下层绘制图片 4.Po ...

  10. 在Win8上安装pyinstaller打包python成为可执行文件

    首先我使用的电脑系统是: Windows-8-6.2.9200 Python的版本是: 2.7.8 默认已安装python2.7且设置好了环境变量. 仅为个人记录,非教程. 首先先安装pip: 首先先 ...