String操作

来自cstring包

只声明string类变量      string +字符串名

声明+赋值   string+ 字符串名 =  “字符串” 

   输入赋值  :      cin >> 字符串名          ->>  这样操作的话会自动去掉开头所有的空格

            getline(cin,字符串名) ->> 不会去掉开头的空格

         ->>  两个getline连用可能会导致第二个getline 失效,所以最好是第二个就用cin>>

   从txt文件中赋值:    (instream.open)    +  getline(instream.line)  一整行赋值给string型变量line



string处理:     回车号: 回车号会被单独认为是一个变量  ->>  in.get()  会自动吸收一个回车 可以解决这个问题

  字符串首尾空格 :这里的array[ ]是一个字符串数组

                                  unsigned long s = array[l].find_first_not_of(" \t");
				  unsigned long e = array[l].find_last_not_of(" \t");
                                  array[l] = array[l].substr(s, e - s + 1);


作为形参  string + 字符串名


函数调用   string + 字符串名


字符串比较大小 : 长度长的首先更大 ; 然后同样长度比较字符串对应数字的大小

字符串比较的过程中  空格键会被自动去掉

字符串球长度 :  string.size ()       ->>>   利用string关键字定义出来的字符串只能用这种方法

       ->>>   只有利用 数组方式定义出来的字符串是可以用strlen表示长度

字符串的结尾都是\0   因此我们对字符串依次执行操作的时候, 可以用!s[i] ='\0' 来判断


字符串某个位置的内容: string[ i ]


不引入length就能遍历字符串的方法  for (auto &c : string){ }   这代表对于string中的每一个字符c,执行操作

然后在接下来for的内容内部还可以对c执行别的操作,例如判读c是不是某个类型的(c的类型依据字符的类型)

以前这么作都要用array [i]的方式来解决 ,现在直接就可以了

利用string代替数组 

string本身具有很多方便的性质,但是string有string的一套规则,字符数组有数组的规则,最重要的是要做到只用一套规则,而不是混用。

使用string 数组名[ 数组长度 ]  会吸收一个字符串当作数组元素   来代替char型数组  优点是可以使用字符串

String: 既然使用了字符串,就不要将数组型字符串与string的方法混用:

string型相等:  a == b      数组字符串相等 : strcmp     

string型赋值:  a = b       数组型字符串赋值 : strcpy

string型续写:  a += b     数组型续写 :strcat

warn:   以上操作均基于a b是同一类的情况下进行,不要将来自不同类型的方法混用  否则可能会面对convert问题


由string 与数组之间相互转换,有时候给定的是字符型数组,但是这种类型并不方便:

  

void aquire(char a[],string b[])
{
    int d=0;					char是给定的数组,string b[]是我们拿来接收的
    for (int c=0;a[c]!='\0' ;c++)		这次的特点是,目标字符有长有短,不一定都是一个长度的                               			
    {							
        if(a[c]!=',')				间隔符使用的是:‘,’ 因此只要是逗号就什么都不作,
        {					不是逗号:至少录入一个字节
            b[d] = a[c];
            if (a[c + 1] != ',')			这里可以使用while修改来达到录入更多的目的
            {                                               
                b[d] += a[c + 1];			巨大问题:这里得单独跳出来一个int d=0;使用
                c++;						如果没有只有c的话,b[]会多出很多空字符
            }
             d++;						这里的d++代表录入一个以后再录入第二个
        }
    }

遍历字符数组 : 在for-loop  或者 while-loop中,检测条件用while(string != "")



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值