Курсовой проект. Обработка текстовой информации
Скачать 0.57 Mb.
|
// Вставить последовательность строк, заданных в команде, после // текущей строки case 1: { int oldLineCount = lineCount; editString = addStringWithRequest(editString, lineCount, pos + 1); break; } // Если ползователь ввел "2", то нам требуется // вставить последовательность строк, // заданных в команде, перед текущей строкой; case 2: { int oldLineCount = lineCount; editString = addStringWithRequest(editString, lineCount, pos); // Так как мы добавляем до этой строчки, то нам нужно изменить позицию на которой мы находимся, // чтобы оставаться на этой же строчке. // P.S. Если ты проверяешь через 6 команду, то ты не увидишь эти изменения, так как выводиться с // этой строчки (те вот эти придыдущие не выводятся) pos += lineCount - oldLineCount; break; } // Если ползователь ввел "3", то нам требуется // удалить заданное число строк, начиная (заканчивая) текущей строкой case 3: { if (lineCount == 0) { cout << "Нет данных для редакирования" << endl; } else { int count_delete = read("Введите количество строк, которое хотите удалить (если ввести с -, то удаляться предыдущие строчки, если +, то следующие: "); if ((pos + count_delete) < 0) count_delete = -(pos); string* new_arr = new string[lineCount - abs(count_delete)]; deleteStrings(editString, lineCount, count_delete, pos, new_arr); lineCount -= abs(count_delete); editString = new_arr; if (count_delete > 0) { if (pos != 0) pos -= 1; } else pos -= abs(count_delete); } break; } // Если ползователь ввел "4", то нам требуется // заменить текущую строку на строку, указанную в команде case 4: { if (lineCount == 0) { cout << "Нет данных для редакирования" << endl; } else { cout << "На какую строчку вы хотите заменить?" << endl; string pastLines = ""; do { getline(cin, pastLines); } while (pastLines == ""); set(editString, pos, pastLines); } break; } // Если ползователь ввел "5", то нам требуется // перейти на заданное число строк вверх // (вниз) относительно текущей строки; case 5: { cout << "Введите количество строк, на которое хотите перейти (если ввести с -, то перейдет на верхнии сточки, если +, то на нижнии" << endl; int shift = 0; cin >> shift; if (((pos + shift) < 0) || ((pos + shift) >= lineCount)) { cout << "Вы ввели значение сдвига, которое направляет за границы данных" << endl; } else { // Просто сдвигаем позицию на ту, что передал пользователь. pos += shift; } break; } // Если ползователь ввел "6", то нам требуется // вывести на экран заданное число строк, начиная с текущей строки case 6: { int countPrintLines = 0; do { if (countPrintLines < 0) cout << "Число строк должно быть больше 0" << endl; countPrintLines = read("Введите количество строк, которое нужно вывести: "); } while (countPrintLines < 0); // Проверка, которая нужна, чтобы пользователь не пытался вывести данные, которых нет. if ((countPrintLines + pos) > lineCount) { countPrintLines = lineCount - pos; cout << "Для вывода доступно максимум " << countPrintLines << " строк" << endl; } else { cout << printLines(editString, pos, countPrintLines); } break; } // Если ползователь ввел "7", то нам требуется // записать текст в файл с именем, указанным в команде case 7: { string fileName = ""; cout << "Введите имя файла, в который требуется сохранить изменения: "; cin >> fileName; if (saveStringInFile(fileName, printLines(editString, 0, lineCount))) { cout << "Успешно записано!" << endl; } else { cout << "Ошибка открытия файла" << endl; } break; } default: { cout << "Данный номер комманды не найден" << endl; break; } } } } } |