处理含有中文的字符串
#include<iostream>
#include<string>
using namespace std;
//通过下标拆字符串
void idx_apart(string input){
//拆开含有中文的字符串时,要注意一个中文占2个字符为(不同OJ可能一个中文占的字符数不一样)
string s1 = input.substr(0, 4);
string s2 = input.substr(4);
cout << s1 << " " << s2;
}
int main()
{
string input;
cin >> input;
idx_apart(input);
return 0;
}
![](https://img-blog.csdnimg.cn/img_convert/b75f89d27459970159671d530018ce18.png)
将字符串s中的子字符串oldVal替换成字符串newVal
#include<iostream>
#include<string>
#define ll long long
using namespace std;
void replace_string(string &s, const string &oldVal, const string &newVal){
unsigned long p = 0;
while( (p = s.find(oldVal, p)) != string::npos && p < s.size()){
s.replace(p, oldVal.size(), newVal);
p += newVal.size();
}
}
int main(){
int t;
cin >> t;
while(t--){
cin.get();
string s, oldVal, newVal;
getline(cin, s);
getline(cin, oldVal);
getline(cin, newVal);
replace_string(s, oldVal, newVal);
cout << s;
}
return 0;
}
对字符串s添加前缀和后缀
#include<iostream>
#include<string>
#define ll long long
using namespace std;
void add_string(string &s, const string &qianzhui, const string &houzhui){
s.insert(0, qianzhui);
s.append(houzhui); // s.insert(s.size(), houzhui)也能实现添加后缀
}
int main(){
int t;
cin >> t;
while(t--){
cin.get();
string s, qianzhui, houzhui;
getline(cin, s);
getline(cin, qianzhui);
getline(cin, houzhui);
add_string(s, qianzhui, houzhui);
cout << s;
}
return 0;
}