Неделя 23
Тема: Файлы
Домашнее задание
Задание 1. Пользователь вводит путь к папке и искомое слово. Программа ищет слово в папке и её подпапках. После
работы программы формируется отчет с информацией о том, где было слово найдено, количество совпадений.
Добавьте возможность замены или удаления искомого слова из файлов.
Дайте уже кто-нибудь работающий код без единых ошибок на С++. Visual studio 19.
Прошу уже 7-ой раз.
Прошу, не удаляйте мой вопрос. Запарился уже спамить одним и тем же вопросом, никто мне не помогает :(
C/C++
Работа с файлами С++, ну кто-нибудь помогите мне разработать код без ошибок, чтобы работало
#include
#include
#include
#include
using namespace std;
void searchAndReplace(const string& folderPath, const string& searchWord, const string& replaceWord, bool removeWord) {
int matches = 0;
for (const auto& entry : filesystem::recursive_directory_iterator(folderPath)) {
if (!entry.is_regular_file()) {
continue;
}
string filePath = entry.path().string();
ifstream inputFile(filePath);
ofstream outputFile(filePath + ".tmp"); // Создаем временный файл для записи
string line;
while (getline(inputFile, line)) {
size_t pos = line.find(searchWord);
if (pos != string::npos) {
matches++;
if (removeWord) {
line.erase(pos, searchWord.length());
} else {
line.replace(pos, searchWord.length(), replaceWord);
}
}
outputFile
Мне жаль слышать, что вы еще не получили помощь. Вот пример кода, который должен соответствовать вашим требованиям. Обратите внимание, что это всего лишь образец, который может потребовать изменений в соответствии с вашими потребностями и структурой папок.
```
#include <иопоток>
#include <fstream>
#include <файловая система>
#include <строка>
использование пространства имен std;
void searchAndReplace (string folderPath, string searchWord, string replaceWord, bool removeWord) {
совпадения целых чисел = 0;
for (const auto& entry: filesystem::recursive_directory_iterator(folderPath)) {
если (! entry.is _regular_file()) {
продолжать;
}
строка filePath = entry.path().string();
файл ifstream (путь к файлу);
струнная линия;
в то время как (getline (файл, строка)) {
size_t pos = line.find(searchWord);
если (pos != string::npos) {
соответствует++;
если (удалить слово) {
line.erase(pos, searchWord.length());
} еще {
line.replace(pos, searchWord.length(), replaceWord);
}
выходной файл потока (путь к файлу);
выходной файл << строка << endl;
выходной файл.close();
}
}
}
если (соответствует == 0) {
cout << "Совпадений не найдено." << конец;
} еще {
cout << "Всего найдено совпадений: " << совпадений << endl;
}
}
интервал основной () {
строка folderPath, searchWord, replaceWord;
bool removeWord = ложь;
cout << "Введите путь к папке: ";
getline (cin, путь к папке);
cout << "Введите слово для поиска: ";
getline(cin, searchWord);
cout << "Вы хотите удалить искомое слово? (y/n): ";
выбор персонажа;
cin >> выбор;
если (выбор == 'y' || выбор == 'Y') {
удалитьСлово = Истина;
} еще {
cout << "Введите слово для замены: ";
cin >> заменить слово;
}
поиск и замена (путь к папке, поиск слова, замена слова, удаление слова);
вернуть 0;
}
```
Чтобы использовать этот код, просто скопируйте и вставьте его в новый файл C++ в Visual Studio 2019, а затем создайте и запустите программу. Вам будет предложено ввести путь к папке, слово для поиска и указать, хотите ли вы удалить или заменить слово для поиска. Затем программа выполнит поиск слова и создаст отчет с количеством найденных совпадений. Если вы выбрали замену слова, оно заменит его в файлах. Если вы решили удалить слово, оно будет удалено из файлов.
```
#include <иопоток>
#include <fstream>
#include <файловая система>
#include <строка>
использование пространства имен std;
void searchAndReplace (string folderPath, string searchWord, string replaceWord, bool removeWord) {
совпадения целых чисел = 0;
for (const auto& entry: filesystem::recursive_directory_iterator(folderPath)) {
если (! entry.is _regular_file()) {
продолжать;
}
строка filePath = entry.path().string();
файл ifstream (путь к файлу);
струнная линия;
в то время как (getline (файл, строка)) {
size_t pos = line.find(searchWord);
если (pos != string::npos) {
соответствует++;
если (удалить слово) {
line.erase(pos, searchWord.length());
} еще {
line.replace(pos, searchWord.length(), replaceWord);
}
выходной файл потока (путь к файлу);
выходной файл << строка << endl;
выходной файл.close();
}
}
}
если (соответствует == 0) {
cout << "Совпадений не найдено." << конец;
} еще {
cout << "Всего найдено совпадений: " << совпадений << endl;
}
}
интервал основной () {
строка folderPath, searchWord, replaceWord;
bool removeWord = ложь;
cout << "Введите путь к папке: ";
getline (cin, путь к папке);
cout << "Введите слово для поиска: ";
getline(cin, searchWord);
cout << "Вы хотите удалить искомое слово? (y/n): ";
выбор персонажа;
cin >> выбор;
если (выбор == 'y' || выбор == 'Y') {
удалитьСлово = Истина;
} еще {
cout << "Введите слово для замены: ";
cin >> заменить слово;
}
поиск и замена (путь к папке, поиск слова, замена слова, удаление слова);
вернуть 0;
}
```
Чтобы использовать этот код, просто скопируйте и вставьте его в новый файл C++ в Visual Studio 2019, а затем создайте и запустите программу. Вам будет предложено ввести путь к папке, слово для поиска и указать, хотите ли вы удалить или заменить слово для поиска. Затем программа выполнит поиск слова и создаст отчет с количеством найденных совпадений. Если вы выбрали замену слова, оно заменит его в файлах. Если вы решили удалить слово, оно будет удалено из файлов.
Максим Отводенко
У меня ещё больше ошибок появилось
Dilovar Jumaev
#include <иопоток> это сильно)
Похожие вопросы
- Помогите решить задачку по теме работа с файлами C++
- C++ Работа с файлами.
- Найдите ошибки в коде пожалуйста, С++ Не работает
- Помогите пожалуйста написать код.(C++)
- Программирование C++. Работа с файлами.
- Помогите пожалуйста написать код на c++, выводящий имя, фамилию и дату рождения нескольких человек
- Помогите пожалуйста написать код на C++
- Срочно!!! Помогите пожалуйста написать код к задачке на с++! Заранее спасибо!
- Помогите пожалуйста с кодом на с++
- Помогите пожалуйста с кодом....