string类型的常用操作

字符串string类型常用函数made by柴犬首相

一、成员函数

1、

什么是成员函数

成员函数就是某种类型特有的函数
2、

成员函数的调用

成员函数调用的一般格式是: 变量名.函数名();
二、

string字符串类型的常用函数

(一本通第五版没有此内容,校本教材此内容不全)
前提:以下所有函数的使用前提是已经定义了 string s1,s2,s;这三个字符串,int a;这个整型变量;
注意:c++中字符数组和字符串的函数是不一样的,字符数组的操作在第五版一本通中有详细论述(第五版一本通P104.那里说的字符串其实就是字符数组。所以我说一本通太坑了。。。套路我两次了)
1、

s.empty()函数

:这是一个判断字符串s是否为空串的函数,有返回值,若s为空串,则返回1,否则返回0;
2、

s.size()函数

:这是一个求字符串s的长度的函数,有返回值,返回s中字符的个数。另外,s.length()函数的用法与s.size()函数的用法相同;
3、

s[n]的用法

:返回s中第n+1个字符(注意,字符串中从0开始计数,s[0]是第一个字符);
4、

+的用法

:s1+s2返回s2接在s1后面所形成的新字符串,同时不改变s1和s2的值;
但是使用+号的时候,左右必须有一个是字符串类型的变量,形如“asdf”的在这里的运算中是字符数组类型。
例如 s=”1234”+”asdf”是非法的。
s=”1234”+s1;是合法的。
s=s1+”1234”+”asdf”;也是合法的,因为采用从左往右的运算法则。
5、

=的用法

:赋值符号保持其本意,s1=s2就是把s2复制到s1中;
6、

==,>=,<=,>,<,!

,保持这些符号的本意,就是比较两个字符串的大小,按字典序(ASCII码)。
7、

s.insert(pos,s2)函数

:在s字符串中下标为pos的元素前插入string类型的s2,没有返回值。
8、

s.substr(pos,len)函数

:有返回值,包含s字符串中下标为pos开始的len个字符。
9、

s.erase(pos,len)函数

:删除s中下标为pos开始的len个字符,没有返回值。
10、

s.replace(pos,len,s2)

:删除s中下标为pos开始的len个字符,并在下标pos处插入一个字符串s2,没有返回值;
11、

s.find(s2,pos)

有返回值,在s中以下标为pos的字符开始查找字符串s2第一次出现的位置,若查找不到返回string::npos; string::npos是一个常数,在不同的编译器里面不一样,在Dev-C++5.7.1里面,这个值是4294967295。
如何求当前C++版本的string::npos的值?
只要自己编写一个小程序就可以查看结果了:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout<<string::npos;
return 0;   
}

12、

s.c_str()函数

:有返回值返回一个与s字面值相同的C风格的字符串临时指针(详细用法见13)
13、

sscanf(s1.c_str(),”%d”,&a);函数

:具体效果是:将s1中字符串类型的数字转化成整型并且赋值给整型变量a;

例如:  s1=”1234”;
        s2=”4321”;
        sscanf(s1.c_str(),”%d”,&a);
        sscanf(s2.c_str(),”%d”,&b);
        cout<<a+b;

此程序的运行结果是5555
(以上是最常用的一个用法)
sscanf还有很多很多其他用法,详见大佬博客:
http://www.cnblogs.com/polebug/archive/2014/01/02/3502565.html
其中a=1234,b=4321,输出了a与b的和5555
14、

sprintf()函数

的用法很多很多,详见大佬的博客:http://blog.csdn.net/kevinhg/article/details/40409041
15、sscanf函数可以理解为从字符串中读入,sprintf函数可以理解为打印到字符串中。这两个函数尽力掌握,但是也不要求完全掌握。。因为有些用法实在是变态。
16、

getline(cin,s);函数


C++中,用scanf读入的字符串只能会过滤掉所有的空格、制表、回车键,也就是说读到以上字符就自动停止读入,如果我们要读入空格该怎么办呢,就用getline函数,getline函数可以读到回车键为止,也就是读入一整行的字符,包括空格。

以上函数看不懂或者编译错误、没有达到预期效果的可以qq上私聊我

17、

字符串的读入:

cin

只能读一个单词,读到空格时结束;

使用scanf读入

需要预先分配空间。下面是例子
string s;//定义字符串
s.resize(100);//给字符串s预先分配空间,
scanf(“%s”,&s[0]);//注意读入的时候给出字符串第一个字符的地址,即&s[0];
同样,这种读法只能读一个单词,读到空格时结束。

使用getline

使用格式:getline(cin,s);
就可以为s读入一整行的字符,包括空格。

字符串的输出:

用cout;
使用printf读入
printf(“%s”,&s[0]);同样需要给出s字符串第一个元素的地址。
puts
puts(s.c_str());需要给出地址,s.c_str()的解释在第四版的一本通P167上,可以向我借阅.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值