C++写程序给定一个文本字符串 s 和 m 个模板,每个模板用 {i}(0≤i≤9) 表示,对应一个字符串 ti ,请将 s 中的所有形如 {i} 的字符串替换为 ti ,如果 s 中包含多个 {i} ,则所有的 {i} 均需要被替换成 ti 。第一行包含一个字符串 s ,表示给定的文本字符串。s 的长度不超过 1000 ,保证 s 中非模板部分只出现英文字母、英文标点(不包括 { 和 } )及空格。 第二行包含一个整数 m(1≤m≤10) ,表示模板数量。 接下来 m 行,每行包含一个字符串 ti ,表示第 i 种模板。ti 的长度不超过 10 ,且只出现英文字母。测试用例为I have a {0}, I have an {1}. 2 pen apple结果应该为I have a pen, I have an apple.
时间: 2023-11-28 19:51:26 浏览: 69
以下是一个可能的 C++ 实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
string s;
getline(cin, s); // 读入文本字符串
int m;
cin >> m; // 读入模板数量
vector<string> templates(m);
for (int i = 0; i < m; i++) {
cin >> templates[i]; // 读入每个模板
}
// 依次处理每个模板
for (int i = 0; i < m; i++) {
string pattern = "{" + to_string(i) + "}";
size_t pos;
while ((pos = s.find(pattern)) != string::npos) {
s.replace(pos, pattern.size(), templates[i]);
}
}
cout << s << endl; // 输出替换后的字符串
return 0;
}
```
该程序首先读入文本字符串和模板数量,然后读入每个模板,并依次处理每个模板。对于每个模板,它会构造形如 "{i}" 的字符串,并在原始字符串中查找并替换所有出现的这种字符串。最后输出替换后的字符串。注意在替换时我们需要使用 string 类的 replace 函数,它的第一个参数是被替换的子串在原始字符串中的位置,第二个参数是被替换的子串的长度,第三个参数是替换后的字符串。
阅读全文