Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- // Replaces all standalone occurrences of oldNumber with newNumber in the given file
- bool replaceNumberInFile(const std::string& filename, const std::string& oldNumber, const std::string& newNumber) {
- std::ifstream inFile(filename);
- if (!inFile.is_open()) {
- std::cerr << "Cannot open file for reading: " << filename << "\n";
- return false;
- }
- std::string modifiedContent;
- std::string line;
- while (std::getline(inFile, line)) {
- size_t pos = line.find(oldNumber);
- while (pos != std::string::npos) {
- // Ensure match is a full number (not part of another number)
- bool validStart = (pos == 0 || !isdigit(line[pos - 1]));
- bool validEnd = (pos + oldNumber.size() == line.size() || !isdigit(line[pos + oldNumber.size()]));
- if (validStart && validEnd) {
- line.replace(pos, oldNumber.length(), newNumber);
- pos = line.find(oldNumber, pos + newNumber.length());
- } else {
- pos = line.find(oldNumber, pos + 1);
- }
- }
- modifiedContent += line + "\n";
- }
- inFile.close();
- std::ofstream outFile(filename);
- if (!outFile.is_open()) {
- std::cerr << "Cannot open file for writing: " << filename << "\n";
- return false;
- }
- outFile << modifiedContent;
- outFile.close();
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment