不使用string的思路处理,而是把string中按空格收集每一个单词,所有单词匹配的都替换
// #include <iostream> // #include <cstdio> // #include <sstream> // #include <string> // using namespace std; // int main() { // string line; // while (getline(cin, line)) { // string original, replace; // cin >> original >> replace; // stringstream stringStream(line); // string str; // while (stringStream >> str) { // if (str == original) { // cout << replace << " "; // } // else { // cout << str << " "; // } // } // cout << endl; // } // return 0; // } #include <iostream> #include <string> #include <vector> using namespace std; int main() { vector<string> vec; string str; getline(cin, str); string before, after; cin >> before >> after; int start = 0; for (int i = 0; i < str.size(); i++) { if (str[i] == ' ') { vec.push_back(str.substr(start, i - start)); start = i + 1; // 更新为下一个单词的开头 } } // 将最后一个单词加入数组 vec.push_back(str.substr(start)); for (int i = 0; i < vec.size(); i++) { if (vec[i] == before) { vec[i] = after; } } for (int i = 0; i < vec.size(); i++) { cout << vec[i] << " "; } cout << endl; return 0; }