string字符串若干操作

删除字符串中子串

string s1="asdfgh";
s1 =s1.erase(2,3);

//则s1的字符串变为"ash"

删除s1中从第2个字符开始的3个字符并再次赋值给s1

字符串中插入字符串

string str1="We can insert a string";   
string str2="a str into ";

//在字符串指定位置前面插入指定字符串
cout <<str1.insert(14,str2)<<endl;    /*A*/

//在字符串指定位置前面插入指定字符串的子串(从指定索引开始的指定个数的字符)
cout <<str1.insert(14,str2,2,9)<<endl;   /*B*/

//插入指定字符串的前n个字符    
cout <<str1.insert(14,"test hello",5)<<endl;     /*C*/

//插入n个相同字符到字符串中  
cout <<str1.insert(14,6,'*')<<endl;    /*D*/

A::::将str2插入到str1下标为14位置处
B::::将str2的下标2开始的9个字符插入到str1的下标为14的位置处
C::::将“test hello”的前5个字符插入到str1的下标为14的位置处
D::::将6个‘*’字符插入到str1的下标为14的位置处

上述的操作结果如下::::
这里写图片描述

替换字符串中子串

string ori = "his name is Tom";
string fnd = "Tom";
string rep = "Jack";
ori = ori.replace(ori.find(fnd), fnd.length(), rep);
cout<<ori<<endl;

用ori对象自带的find函数找到fnd这个子字符串,再用ori对象的自带的replace函数来替换,结果如下::
这里写图片描述

将string字符串转换成char *字符串

如果要将string转换为char*,可以使用string提供的函数c_str() ,或是函数data(),data除了返回字符串内容外,不附加结束符’\0’,而c_str()返回一个以‘\0’结尾的字符数组。

/*错误做法:::::*/
char *C;
string S="123456";
C = S.c_str();

/*正确做法:::::*/
char C[20];
string S="123456";
strcpy(C,S.c_str());

c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.c_str()返回的是一个临时指针,在S对象被析构后,C会成为一个野指针,C指向的内容也会被改变。

从文件中逐行读取string字符串

ifstream fin("data.txt");  
string  s;  
while(getline(fin,s))
{    
    cout <<  "Read from file: "  << s << endl; 
}

getline读取文件方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分。

我把data.txt中写入一些字符串,如下:::
这里写图片描述

上述代码的执行结果::::
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值