thewitchking

Untitled

Jul 18th, 2025
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. // Replaces all standalone occurrences of oldNumber with newNumber in the given file
  6. bool replaceNumberInFile(const std::string& filename, const std::string& oldNumber, const std::string& newNumber) {
  7.     std::ifstream inFile(filename);
  8.     if (!inFile.is_open()) {
  9.         std::cerr << "Cannot open file for reading: " << filename << "\n";
  10.         return false;
  11.     }
  12.  
  13.     std::string modifiedContent;
  14.     std::string line;
  15.  
  16.     while (std::getline(inFile, line)) {
  17.         size_t pos = line.find(oldNumber);
  18.         while (pos != std::string::npos) {
  19.             // Ensure match is a full number (not part of another number)
  20.             bool validStart = (pos == 0 || !isdigit(line[pos - 1]));
  21.             bool validEnd = (pos + oldNumber.size() == line.size() || !isdigit(line[pos + oldNumber.size()]));
  22.  
  23.             if (validStart && validEnd) {
  24.                 line.replace(pos, oldNumber.length(), newNumber);
  25.                 pos = line.find(oldNumber, pos + newNumber.length());
  26.             } else {
  27.                 pos = line.find(oldNumber, pos + 1);
  28.             }
  29.         }
  30.         modifiedContent += line + "\n";
  31.     }
  32.  
  33.     inFile.close();
  34.  
  35.     std::ofstream outFile(filename);
  36.     if (!outFile.is_open()) {
  37.         std::cerr << "Cannot open file for writing: " << filename << "\n";
  38.         return false;
  39.     }
  40.  
  41.     outFile << modifiedContent;
  42.     outFile.close();
  43.  
  44.     return true;
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment