删除字符串中子串
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中写入一些字符串,如下:::
上述代码的执行结果::::