首页 > 代码库 > C++primer 9.43
C++primer 9.43
题目要求:编写一个函数,接受三个string参数s,oldVal和newVal。使用迭代器及insert和erase函数将s中所有oldVal替换为newVal。测试你的程序,用它替换通用的简写形式,如,将"tho"替换为"though",将"thru"替换为"though"。
#include<iostream>#include<string>#include<vector>#include<sstream>using namespace std;void find_replace(string s, string oldValue, string newValue){ if (s.empty() || oldValue.empty() || newValue.empty()) { cout << "Error" << endl; return; } if (s.size() < newValue.size()) { cout << "Error" << endl; return; } string word; vector<string>vec; //分割string istringstream stream(s); { while(stream >> word) vec.push_back(word); } vector<string>::iterator it1 = vec.begin(); while (it1 != vec.end()) { if (*it1 == oldValue) { string::iterator it2 = (*it1).begin(); it2 = (*it1).erase(it2, it2+oldValue.size()); (*it1).insert(it2, newValue.begin(), newValue.end()); } else { string::iterator it3 = (*it1).begin(); string::iterator it4 = oldValue.begin(); while (it3 != (*it1).end()) { if ((*it3) == (*it4)) { string sub = (*it1).substr(it3-(*it1).begin(), oldValue.size()); if (sub == newValue) { unsigned offset = it3 - (*it1).begin(); it3 = (*it1).erase(it3, it3+oldValue.size()); (*it1).insert(it3, newValue.begin(), newValue.end()); it3 = (*it1).begin() + offset + newValue.size() - 1; } } it3++; } } it1++; } for (auto i = vec.begin(); i != vec.end(); i++) cout << *i << endl;}int main(){ //略 return 0;}
C++primer 9.43
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。