string类的坑(string 类的应用和加倍后出现的问题)

Posted xy2656141474

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了string类的坑(string 类的应用和加倍后出现的问题)相关的知识,希望对你有一定的参考价值。

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6   string t;
 7   cin>>t; 
 8   int len = t.length(),i;
 9 
10   for(i = 0;i<len;i++)
11   {
12    t[len+i] = t[i];
13   }
14   t[len*2] = ;  
15    cout<<t;
16  return 0;
17 } 

一‘执行以上代码后t仍然没被加倍,这是因为‘’是字符数组的结束标志符,不是string的!

’在字符串内也可以算作一个元素

1 string s = "123456";
2 s[3]=;
3 cout << s << endl; //A行
4 string str = "12456"; 
5 cout << str << endl; //B行

A行你以为输出 123,实际输出 123 56 ,因为 就是个空字符!

B行输出 12%6,因为人家把45 看作八进制数 45,相应十进制就是 37,对应字符就是%

二.另外string s;此时的s是一个空字符串,没有长度

三.string 与 char[](或者 char*)的相互赋值问题
1、char[] 赋值给 string 对象,直接赋值
2、char* 赋值给 string 对象,直接赋值
3、string 对象赋值给 char[]或 char*,有三种方式。
四.对于char对应的函数,若用string使他们(如strcpy,strcat等等)
函数形参为char[]时在主函数的实参(若为string)则应写为&s[0]
因为char[]是字符串第一个元素的首地址,要用取地址的符号&s[0]
五.string1类中类似于python的切片原理的函数str.copy(ch,length,first_element)
1 char a[20] = {0}; //将 a 数组的全部元素初始化为‘‘
2 string s = "123456"; 
3 s.copy(a, 3, 1); //len=3, pos=1
4 cout << a << endl; // 输出:234

可应用于KMP算法的人体病毒检测

详情代码在这里

 

以上是关于string类的坑(string 类的应用和加倍后出现的问题)的主要内容,如果未能解决你的问题,请参考以下文章

JDK1.6中String类的坑,快让我裂开了…

(C++基础_STL) —— string类的基本应用

(C++基础_STL) —— string类的基本应用

(C++基础_STL) —— string类的基本应用

(C++基础_STL) —— string类的基本应用

Lists.transform() ⽅法使⽤的坑