Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- bool correctLine(string& l, const string& pattern) {
- const char digit = 'x';// символ для цифр(циферный символ для шаблона)
- int lenght = pattern.length();
- if (l.length() != lenght)// если длина не совпадает с длиной шаблона, то строка не подходит
- return false;
- for (int i = 0; i < lenght; i++)
- // если символ в шаблоне циферный, то проверяем на "циферность" символа в строке,
- // иначе просто сопоставляем символы строки и шаблона
- if (pattern[i] == digit ? !isdigit(l.at(i)) : pattern[i] != l[i])
- return false;
- return true;
- }
- int main() {
- ifstream in ("f1.txt");
- ofstream out("f2.txt");
- const string patterns[3] = { "xxx-xxx", "xxx-xx-xx", "xx-xx-xx" };
- string temp;
- while (in)// пока файл не кончился
- if (in >> temp) // пока он содержит слова, записываем в temp слово
- for (auto x : patterns) // аналог for(int i = 0; i < 3; i++), x = patterns[i]
- if (correctLine(temp, x)) {// если хоть одно совпадение
- out << temp << endl;// запись
- break; // выход из последующих сравнений, для оптимизации
- }
- in.close();
- out.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement