题目:从键盘输入任意的一个字符串A ,其长度L 不小于6 ,同时再输入一个整数N (其中:N<L)作为插入点,以及任意的一个字符串B ,其长度为L1 (其中:L1<L ),现要求完成下列功能:
如果字符串A 的长度L 大于100 输出 100 ,否则输出L ;
在N 点处,插入字符串B 后,将得到一个新字符串C ,请计算并输出最后的字符串;
查找字符串C 中,从右到左第一个出现字母 x 的位置。
第一次的相反是将他要插入的位置进行后移要插入的个数,但是发现
string str = "Hello World";
// 此时他的位数是11位
str[1] = 'b'; // 可行
str[12] = 'c'; // 不可行
即不能对自身没有开辟的空间进行直接赋值,而append也偏离了我的初心。
因此考虑到用substr方法,直接 截取前后端,再字符串相加即可
#include <iostream>
#include <string>
#include <algorithm>
void combine_string() {
using std::cout;
using std::endl;
using std::cin;
using std::string;
int N;
string input_str, insert_str;
string combine_str;
cin >> input_str >> N >> insert_str;
if (input_str.size() >= 5 && N < input_str.size() && insert_str.size() < input_str.size()) {
if (input_str.size() > 100) {
cout << "100" << endl;
}
else {
cout << input_str.size() << endl;
}
string before_str = input_str.substr(0, N-1);
string after_str = input_str.substr(N-1, input_str.size());
combine_str = before_str + insert_str + after_str;
cout << combine_str << endl;
reverse(combine_str.begin(), combine_str.end());
for (int i = 0; i < combine_str.size(); i++) {
if (combine_str[i] == 'x') {
cout << i+1 << endl;
break;
}
}
}
}
int main() {
combine_string();
return 0;
}
第二个题有些简单,在此不做过多叙述了
code
#include <iostream>
#include <string>
#include <algorithm>
void combine_string() {
using std::cout;
using std::endl;
using std::cin;
using std::string;
int N;
string input_str, insert_str;
string combine_str;
cin >> input_str >> N >> insert_str;
if (input_str.size() >= 5 && N < input_str.size() && insert_str.size() < input_str.size()) {
cout << input_str.size() << endl;
for (int i = 0; i < input_str.size(); i++) {
if (input_str[i] == 'a') {
cout << i+1 << endl;
break;
}
}
string before_str = input_str.substr(0, N-1);
string after_str = input_str.substr(N-1, input_str.size());
combine_str = before_str + insert_str + after_str;
cout << combine_str << endl;
}
}
int main() {
combine_string();
return 0;
}